抓 图

抓 图
抓 图 实 际 上 是 位 图 的 复 制 , Windows在 复 制 位 图 时 是 不 会 受 鼠 标
光 标 的 影 响 的 。 可 以 先 抓 图 , 然 后 在 使 用 DrawIcon将 鼠 标 光 标 画 上 去 。


procedure TForm1.FormClick(Sender: TObject);
var
  winHWND, hCur: integer;
  winDC: integer;
  rect: TRect;
  pt: TPoint;
  fBitmap: TBitmap;
begin
  hCur := GetCursor(); // 取得光标句柄
  GetCursorPos(pt); // 取得光标位置
  winHWND := GetDesktopWindow();
  winDC := GetDC(winHWND);
  GetWindowRect(winHWND, rect);
  fBitmap := TBitmap.create;
  try
    fBitmap.width := rect.right - rect.left;
    fBitmap.height := rect.bottom - rect.top;
    BitBlt(fBitmap.canvas.handle, 0, 0, fBitmap.width, fBitmap.height, winDC, 0, 0, SRCCOPY);
    DrawIcon(fBitmap.canvas.handle, pt.x, pt.y, hCur); // 画光标
    ReleaseDC(winHWND, winDC);
    Image1.Picture.Bitmap.Assign(fBitmap);
  finally
    fBitmap.Free;
  end;
end;

你可能感兴趣的:(抓 图)