加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 将画布保存为图像

发布时间:2020-12-15 09:42:45 所属栏目:大数据 来源:网络整理
导读:我正在使用Delphi XE2编写程序.我在画布上画了一些线条和形状.我想使用保存对话框将Canvas保存为图像文件. 所以我在表单上有一个保存按钮,通过单击它,它会打开保存对话框.我该如何继续保存画布? 解决方法 目前,您很可能在TPaintBox或表单本身的OnPaint事件
我正在使用Delphi XE2编写程序.我在画布上画了一些线条和形状.我想使用保存对话框将Canvas保存为图像文件.

所以我在表单上有一个保存按钮,通过单击它,它会打开保存对话框.我该如何继续保存画布?

解决方法

目前,您很可能在TPaintBox或表单本身的OnPaint事件中拥有代码.该代码可能如下所示:

procedure TMyForm.PaintBox1Paint(Sender: TObject);
begin
  with PaintBox1.Canvas do
  begin
    MoveTo(0,0);
    LineTo(42,666);
    // and so on.
  end;
end;

我们需要做一些重新分解.我们需要将绘制代码提取到单独的方法中.将该方法传递给画布,使其与绘制的画布无关.

procedure TMyForm.PaintToCanvas(Canvas: TCanvas);
begin
  with Canvas do
  begin
    MoveTo(0,666);
    // and so on.
  end;
end;

procedure TMyForm.PaintBox1Paint(Sender: TObject);
begin
  PaintToCanvas(PaintBox1.Canvas);
end;

我们现在回到了我们开始的地方,但准备好迎接真正的目标.让我们编写一个绘制到位图的函数,然后保存到文件中:

procedure TMyForm.PaintToFile(const FileName: string);
var
  Bitmap: TBitmap;
begin
  Bitmap := TBitmap.Create;
  try
    Bitmap.SetSize(Paintbox1.Width,Paintbox1.Height);
    PaintToCanvas(Bitmap.Canvas);
    Bitmap.SaveToFile(FileName);
  finally
    Bitmap.Free;
  end;
end;

这自然可以扩展到其他图像类型,如GIF,PNG,JPEG等.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读