Delphi 以编程方式在TGPImage上绘制
是否可以从PNG文件或资源加载Delphi 以编程方式在TGPImage上绘制,delphi,gdi+,paint,Delphi,Gdi+,Paint,是否可以从PNG文件或资源加载TGPImage himg := TGPImage.Create('heading.png'); 然后像用画布一样在上面画画来修改 或者,更确切地说,我希望使用编程方法绘制背景,然后从我的绘画上方的PNG加载一个图像,以便将此合并图像作为一个实体TGPImage 我查看了TGPImage的方法和属性,没有找到绘画工具 我可以用TBitmap来做这件事吗 以下操作不起作用: _hbm := TBitmap.Create(); _hbm.Width := 1000;
TGPImage
himg := TGPImage.Create('heading.png');
然后像用画布一样在上面画画来修改
或者,更确切地说,我希望使用编程方法绘制背景,然后从我的绘画上方的PNG加载一个图像,以便将此合并图像作为一个实体TGPImage
我查看了TGPImage
的方法和属性,没有找到绘画工具
我可以用TBitmap
来做这件事吗
以下操作不起作用:
_hbm := TBitmap.Create();
_hbm.Width := 1000;
_hbm.Height := 1000;
_hbm.Canvas.Brush.Color := clBlack;
_hbm.Canvas.Pen.Color := clBlack;
_hbm.Canvas.FillRect(Rect(0, 0, 1000, 1000));
_hgb := TGPBitmap.Create(_hbm.Handle);
....................
GPGraphics.DrawImage(_hgb, 0, 0, _hgb.GetWidth(), _hgb.GetHeight());
你不需要一个
TBitmap
。只需使用与
TGPImage
关联的TGPGraphics
即可在TGPImage
曲面上绘制
下面是一个非常简单的例子:
uses GDIPOBJ, GDIPAPI, GDIPUTIL;
procedure TForm1.Button1Click(Sender: TObject);
var
b: TGPBitmap;
g: TGPGraphics;
pen: TGPPen;
encoderClsid: TGUID;
begin
b := TGPBitmap.Create('D:\in.png');
try
g := TGPGraphics.Create(b);
try
pen := TGPPen.Create(MakeColor(255, 255, 0), 3);
try
{ Draw a yellow Rectangle }
g.DrawRectangle(pen, MakeRect(0, 0, 200, 200));
GetEncoderClsid('image/png', encoderClsid);
b.Save('D:\out.png', encoderClsid);
finally
pen.Free;
end;
finally
g.Free;
end;
finally
b.Free;
end;
end;
你不需要一个
TBitmap
。只需使用与
TGPImage
关联的TGPGraphics
即可在TGPImage
曲面上绘制
下面是一个非常简单的例子:
uses GDIPOBJ, GDIPAPI, GDIPUTIL;
procedure TForm1.Button1Click(Sender: TObject);
var
b: TGPBitmap;
g: TGPGraphics;
pen: TGPPen;
encoderClsid: TGUID;
begin
b := TGPBitmap.Create('D:\in.png');
try
g := TGPGraphics.Create(b);
try
pen := TGPPen.Create(MakeColor(255, 255, 0), 3);
try
{ Draw a yellow Rectangle }
g.DrawRectangle(pen, MakeRect(0, 0, 200, 200));
GetEncoderClsid('image/png', encoderClsid);
b.Save('D:\out.png', encoderClsid);
finally
pen.Free;
end;
finally
g.Free;
end;
finally
b.Free;
end;
end;