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

delphi – 如何使用组合框获取面板的图像

发布时间:2020-12-15 04:23:25 所属栏目:大数据 来源:网络整理
导读:我需要捕捉面板的图像. 我遇到的问题是,如果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;
我需要捕捉面板的图像.

我遇到的问题是,如果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);
   B.Canvas.Unlock;
   Image1.Picture.Assign(B);
  finally
    B.Free;
  end;
end;

使用此代码,我放下一个带有TCombobox的面板.然后在Text Property中输入一个值.我也放了一个TImage接下来的两个.然后我添加一个按钮来调用上面的内容
码.

结果如下:

有没有更好的方法来捕捉面板的真实图像.

解决方法

使用 GetDCBitBlt功能怎么样?
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,Panel.ClientWidth,Panel.ClientHeight,SrcDC,SRCCOPY);
   finally
      ReleaseDC(Panel.Handle,SrcDC);
   end;
   Image.Picture.Assign(B);
 finally
    B.Free;
  end;
end;

(编辑:李大同)

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

    推荐文章
      热点阅读