- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用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 上绘制了一些线条
最佳答案
要将 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.Width
和 Bitmap.Height
.
关于Delphi 7,如何将Paintbox内容复制到Tbitmap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8924275/
我需要向油漆盒写入一些文本,我在 OnPaint 事件中执行此操作。当我在方法中设置字体大小两次时,OnPaint 事件会被重复调用。 要亲自查看,请尝试以下操作: 创建新的 VCL Forms 应用
我刚刚从 Delphi 10.4.2 升级到 Delphi 11 Alexandria。我经常使用 RDP,所以当 TPaintBox 失效时我注意到闪烁。奇怪的是,如果带有 TPaintBox 的表
我使用 Borland 的 C++ 构建器编写了一个小程序,一路走来,一切似乎都很好。我的程序有一个 map 窗口和一个表格窗口,当用户按下按钮时,会启动一个漫长的过程,读取所有 map 和表格信息,
我是一名优秀的程序员,十分优秀!