Rob*_*ove 5 delphi image-capture delphi-xe
我需要捕捉面板的图像.
我遇到的问题是,如果Panel包含TCombobox,则不会出现Text.
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;
Run Code Online (Sandbox Code Playgroud)
使用此代码,我放下一个带有TCombobox的面板.然后在Text Property中输入一个值.我也放了一个TImage接下来的两个.然后我添加一个按钮来调用上面的代码.
结果如下:

有没有更好的方法来捕捉面板的真实图像.
RRU*_*RUZ 11
procedure AssignPanelImageToPicture(Panel : TPanel;Image : TImage);
var
B : TBitmap;
SrcDC: HDC;
begin
B := TBitmap.Create;
try
B.Width := Panel.Width;
B.Height := Panel.Height;
SrcDC := GetDC(Panel.Handle);
try
BitBlt(B.Canvas.Handle, 0, 0, Panel.ClientWidth, Panel.ClientHeight, SrcDC, 0, 0, SRCCOPY);
finally
ReleaseDC(Panel.Handle, SrcDC);
end;
Image.Picture.Assign(B);
finally
B.Free;
end;
end;
Run Code Online (Sandbox Code Playgroud)