gpt4 book ai didi

Delphi 7,如何将Paintbox内容复制到Tbitmap?

转载 作者:行者123 更新时间:2023-12-03 15:19:40 29 4
gpt4 key购买 nike

我正在使用delphi 7,我想如何将 TpaintBox 的内容复制/分配给 Tbitmap?

像这样

 public
{ Public declarations }
BitMap : TBitmap;
end;

我有一个声明为公共(public)的 Tbitmap,并像这样在 FormCreate 上创建它

      procedure TForm1.FormCreate(Sender: TObject);
begin
BitMap := TBitMap.Create;
end;

然后我在位图上画一些东西,如下所示

      procedure TForm1.DrawOnPainBox;
begin
If BitMap.Width <> PaintBox1.Width then BitMap.Width := PaintBox1.Width;
If BitMap.Height <> PaintBox1.Height then BitMap.Height := PaintBox1.Height;
BitMap.Canvas.Rectangle(0,0,random(PaintBox1.Width ),random(PaintBox1.Height));
PaintBox1.Canvas.Draw(0,0,BitMap);
end;

使用PaintBox1.Canvas.Draw(0,0,BitMap);我们可以将位图中的内容显示到绘画盒中,但相反的方式是什么?

如何将绘画盒的内容分配/复制到位图?

 `BitMap:=PaintBox1.Canvas.Brush.Bitmap;` 

此编译,但如果我这样做并再次调用过程 TForm1.DrawOnPainBox; 我得到访问冲突并且调试器显示位图PaintBox1.Canvas.Brush.Bitmap 即使在 PaintBox 上绘制了一些线条

enter image description here

enter image description here

最佳答案

要将 TPaintBox(我们称之为 PaintBox1)的内容分配给 TBitmap(Bitmap,说),你可以做到

Bitmap.Width := PaintBox1.Width;
Bitmap.Height := PaintBox1.Height;
BitBlt(Bitmap.Canvas.Handle,
0,
0,
Bitmap.Width,
Bitmap.Height,
PaintBox1.Canvas.Handle,
0,
0,
SRCCOPY);

注意:在较新版本的 Delphi 中,您可以使用 Bitmap.SetSize 代替 Bitmap.WidthBitmap.Height .

关于Delphi 7,如何将Paintbox内容复制到Tbitmap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8924275/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com