将TPanel绘制到图像并将其保存在数据集中

时间:2013-06-30 15:30:04

标签: xml image delphi save panel


我有一个面板(TPanel),它是运行时创建的其他多个面板的父级。我想将所有这些像图像(位图,图形,无论......)一样保存到数据中。我用过这个:

image1.Picture:= nil;
panel1.PaintTo(image1.Canvas.Handle,0,0);
table1.edit;
table1.FieldByName('Im').Assign(image1.Picture.Bitmap);    
table1.Post;


和本:

var
Bitmap: TBitmap;
BmpField: TGraphicField;
begin
BmpField := table1.FieldByName('Im') as TGraphicField;
Bitmap := TBitmap.Create;
try
Bitmap.Width := Panel1.Width;
Bitmap.Height := Panel1.Height;
Panel1.PaintTo(Bitmap.Canvas.Handle, 0, 0);
table1.Edit;
BmpField.Assign(Bitmap);
table1.Post;
finally
Bitmap.Free;
end;
end;

由于Ken White并且两种方法都有效但...当我将数据集保存为.xml并在文本编辑器中打开.xml时,保存在那里的图像是无限的字符串(不大,但无限!)。有没有办法保存这个面板(里面的面板)像数据库中的普通图像和保存的.xml字符串是一个体面的?谢谢。

1 个答案:

答案 0 :(得分:0)

我在另一篇文章中对此进行了解释。必须对图像进行编码(转换为二进制以外的其他内容)才能写入XML。它不是“无限的”。这是编码图像。您不能将二进制图像存储为XML中的实际图像。 是一个体面的。 : - )

你能解释一下你的实际目标是什么吗?图像在XML的图形领域非常精细。 (您可以在那里编写然后检索它并显示在TImage中,对吗?)我不明白为什么您一直希望读取二进制数据库字段为;它的不是字符串。它是包含图形图像的二进制字段。绿色草地的字符串图片会是什么样的?