【发布时间】:2012-01-11 23:45:34
【问题描述】:
我需要捕捉面板的图像。
我遇到的问题是,如果面板包含 TCombobox,则不会出现文本。
procedure AssignPanelImageToPicture(Panel : TPanel;Image : TImage);
var
B : TBitmap;
begin
B := TBitmap.Create;
try
B.Width := Panel.Width;
B.Height := Panel.Height;
B.Canvas.Lock;
Panel.PaintTo(B.Canvas.Handle,0,0);
B.Canvas.Unlock;
Image1.Picture.Assign(B);
finally
B.Free;
end;
end;
使用此代码,我放置了一个带有 TCombobox 的面板。然后在文本属性中输入一个值。我也放一个TImage Next 两个吧。然后我添加一个按钮来调用上面 代码。
结果如下:
有没有更好的方法来捕捉面板的真实图像。
【问题讨论】:
-
ComboBoxes 是由 Windows 绘制的,因此您的重定向技术(Panel.PaintTo,它告诉控件将自己绘制到另一个位置)将不起作用。您可以将整个 FORM 作为位图获取,但我不知道单个面板的可行技术。也许这有帮助:bitwisemag.com/copy/delphi/delphi1.html
-
TForm.GetFormImage 遇到了同样的问题,它几乎是相同的代码。如果我捕获整个屏幕然后复制出所需的矩形,它确实有效,但这似乎太多开销。截屏代码在这里:code.google.com/p/robstechcorner/source/browse/trunk/Delphi/…
标签: delphi delphi-xe image-capture