请问在屏幕截图,并且绘制鼠标,一般为箭头时能正确显示,为漏斗或其他图标时位置会有些偏差。
Bitmap := TBitmap.Create;
Bitmap.Width := Screen.Width;
Bitmap.Height := Screen.Height;
Canvas := TCanvas.Create;
DC := GetDC(0);
Canvas.Handle := DC;
Cursor := TIcon.Create;
Bitmap.Canvas.CopyRect(Bitmap.Canvas.ClipRect, Canvas, Bitmap.Canvas.ClipRect);
GetCursorPos(CurPoint);
Cursor.Handle := GetCursor;
Bitmap.Canvas.Draw(CurPoint.X, CurPoint.Y, Cursor);
可能是由于其他光标的焦点不在左上角,造成偏差,如果是这样那应该怎样获得这焦点的坐标?
Bitmap := TBitmap.Create;
Bitmap.Width := Screen.Width;
Bitmap.Height := Screen.Height;
Canvas := TCanvas.Create;
DC := GetDC(0);
Canvas.Handle := DC;
Cursor := TIcon.Create;
Bitmap.Canvas.CopyRect(Bitmap.Canvas.ClipRect, Canvas, Bitmap.Canvas.ClipRect);
GetCursorPos(CurPoint);
Cursor.Handle := GetCursor;
Bitmap.Canvas.Draw(CurPoint.X, CurPoint.Y, Cursor);
可能是由于其他光标的焦点不在左上角,造成偏差,如果是这样那应该怎样获得这焦点的坐标?
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;type
TForm1 = class(TForm)
Image1: TImage;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
Bitmap: TBitmap;
Canvas: TCanvas;
DC: HDC;
Cursor: TIcon;
CurPoint: TPoint;
begin
Bitmap := TBitmap.Create;
Bitmap.Width := Screen.Width;
Bitmap.Height := Screen.Height;
Canvas := TCanvas.Create;
DC := GetDC(0);
Canvas.Handle := DC;
Cursor := TIcon.Create;
Bitmap.Canvas.CopyRect(Bitmap.Canvas.ClipRect, Canvas, Bitmap.Canvas.ClipRect);
GetCursorPos(CurPoint);
Cursor.Handle := GetCursor;
Bitmap.Canvas.Draw(CurPoint.X, CurPoint.Y, Cursor);
Image1.Picture.Bitmap.Assign(Bitmap);
Cursor.Free;
Bitmap.Free;
Canvas.Free;
ReleaseDC(0, DC);
end;procedure TForm1.FormCreate(Sender: TObject);
begin
Screen.Cursor := crHourGlass;
Image1.Align := alClient;
end;end.像这样偏差就比较大了
Bitmap.Canvas.Draw(CurPoint.X - pIconInfo.xHotspot, CurPoint.Y - pIconInfo.yHotspot, Cursor);
这下可以了,获取光标焦点坐标