Delphi图象截取编程示例(2)

少年青春已流逝

少年青春已流逝

2016-02-19 14:16

下面请跟着图老师小编一起来了解下Delphi图象截取编程示例(2),精心挑选的内容希望大家喜欢,不要忘记点个赞哦!
 

  (四)创建抓取图象的单元文件ScrnCpt

  unit ScrnCpt;

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  interface

  uses windows,forms,controls,classes,Graphics;
  function CaptureScreenRect(ARect:TRect):TBitmap;
  function CaptureScreen:TBitmap;
  function CaptureClientImage(Control:TControl):TBitmap;
  function CaptureControlImage(Control:TControl):TBitmap;
  function CaptureWindowImage(Wnd:HWND):TBitmap;

  implementation

  function CaptureScreenRect(ARect:TRect):TBitmap;
  var ScreenDC:HDC;    //设备描述表的句柄
  
begin
    result:=TBitmap.Create ;
    with Result,ARect do
    begin
      Width :=Right-left;
      Height:=Bottom-Top;
      ScreenDC:=GetDC(0); //获取一个窗口的设备描述表的句柄,0参数返回屏幕窗口设备描述表的句柄
      try
        //BOOL BitBlt(hdcDest,nXDest,nYDest,nWidth,nHeight,hdcSrc,nXSrc,nYSrc,dwRop)
        //把位图从源设备描述表hdcSrc复制到目标设备描述表hdcDest,
        //光栅操作码dwRop指定了 源图的组合方式

        BitBlt(Canvas.Handle ,0,0,Width,Height,ScreenDC,left,top,SRCCOPY);
      finally
        ReleaseDC(0,ScreenDC);
      end;
    end;
  end;

  //全屏抓图
  function CaptureScreen:TBitmap;
  begin
    with Screen do
      result:=CaptureScreenRect(Rect(0,0,width,height));
  end;

  //抓取一个窗体或控件的客户区图象
  function CaptureClientImage(Control:TControl):TBitmap;
  begin
    //Control.ClientOrigin是控件客户区的左上角位置。x,y是 ClientOrigin的变量
    with Control,Control.ClientOrigin do
      result:=CaptureScreenRect(Bounds(x,y,ClientWidth,ClientHeight));
  end;

  // 抓取一整个窗体或控件
  function CaptureControlImage(Control:TControl):TBitmap;
  begin
    with Control do
      if Parent=nil then //无父窗体,根据它的位置,直接抓取
        result:=CaptureScreenRect(Bounds(left,top,width,height))
      else  //有父窗体,把它转化为相对于屏幕坐标,再 抓取
        with Parent.ClientToScreen(Point(Left,top))do
          result:=CaptureScreenRect(Bounds(x,y,width,height));
  end;

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  //根据窗体句柄进行抓取
  function CaptureWindowImage(Wnd:HWND):TBitmap;
  var R:TRect;
  begin
    GetWindowRect(wnd,R); //把窗口句柄指定的窗口坐标放入TRect
    result:=CaptureScreenRect(R);
  end;

  end.

展开更多 50%)
分享

猜你喜欢

Delphi图象截取编程示例(2)

编程语言 网络编程
Delphi图象截取编程示例(2)

Delphi图象截取编程示例(3)

编程语言 网络编程
Delphi图象截取编程示例(3)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Delphi图象截取编程示例(7)

编程语言 网络编程
Delphi图象截取编程示例(7)

Delphi图象截取编程示例(1)

编程语言 网络编程
Delphi图象截取编程示例(1)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Delphi图象截取编程示例(8)

编程语言 网络编程
Delphi图象截取编程示例(8)

Delphi图象截取编程示例(4)

编程语言 网络编程
Delphi图象截取编程示例(4)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

构建一个容易单元测试的java--web系统

构建一个容易单元测试的java--web系统

学习CSS的伪类

学习CSS的伪类
下拉加载更多内容 ↓