以编程方式在 TGPImage 上绘制
Paint on TGPImage programmatically
能否从 PNG 文件或资源中加载 TGPImage
himg := TGPImage.Create('heading.png');
然后像使用canvas?
一样通过在其上绘画进行修改
或者,更确切地说,我想使用编程方法绘制背景,然后从我的绘画上方加载 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;
能否从 PNG 文件或资源中加载 TGPImage
himg := TGPImage.Create('heading.png');
然后像使用canvas?
一样通过在其上绘画进行修改或者,更确切地说,我想使用编程方法绘制背景,然后从我的绘画上方加载 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;