You can do that through RawImage aswell, if you don't want to rely on 3rd party libraries.
TRGBQUAD = record
rgbBlue : BYTE;
rgbGreen : BYTE;
rgbRed : BYTE;
rgbReserved : BYTE;
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
var b1, b2: TBitmap; data1, data2: PByte;
begin
b1:=TBitmap.Create;
b2:=TBitmap.Create;
b1.PixelFormat:=pf32bit;
b2.PixelFormat:=pf32bit;
b1.SetSize(100, 100);
b2.SetSize(100, 100);
b1.Canvas.Font.Color:=clRed;
b1.Canvas.TextOut(10, 10, 'Test');
data1:=b1.RawImage.Data;
data2:=b2.RawImage.Data;
move(data1^, data2^,
b1.Width * b1.Height * SizeOf(TRGBQUAD));
// This here would be perfect but it doesn't compile..
// so i had to pass them through data1, data2 variables instead.
//move(b1.RawImage.Data^, b2.RawImage.Data^,
// b1.Width * b1.Height * SizeOf(TRGBQUAD));
b1.Free;
b2.SaveToFile('c:\test.bmp');
b2.Free;
end;
This code here made me a test.bmp with red 'Test' written in it.