Pre*_*ias 4 delphi delphi-7 draw
我正在研究delphi 7,我想如何将TpaintBox的内容复制/分配给Tbitmap?
像这样
public
{ Public declarations }
BitMap : TBitmap;
end;
Run Code Online (Sandbox Code Playgroud)
我有一个声明为公共的Tbitmap,我就像这样创建onFormCreate
procedure TForm1.FormCreate(Sender: TObject);
begin
BitMap := TBitMap.Create;
end;
Run Code Online (Sandbox Code Playgroud)
然后我像这样在位图上绘制一些东西
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;
Run Code Online (Sandbox Code Playgroud)
与PaintBox1.Canvas.Draw(0,0,BitMap);
我们可以显示的内容有位图中的颜料盒,但什么是相反的呢?
如何将一个paintbox的内容分配/复制到位图?
`BitMap:=PaintBox1.Canvas.Brush.Bitmap;`
Run Code Online (Sandbox Code Playgroud)
这编译,但如果我这样做,再次调用procedure TForm1.DrawOnPainBox;
我得到access Violation
和调试器显示bitmap
,PaintBox1.Canvas.Brush.Bitmap
即使有一些线条绘制在paintBox
And*_*and 10
要将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);
Run Code Online (Sandbox Code Playgroud)
注意:在较新版本的Delphi中,您可以使用Bitmap.SetSize
而不是Bitmap.Width
和Bitmap.Height
.
归档时间: |
|
查看次数: |
6630 次 |
最近记录: |