delphi 鼠标指针图片替换,有偏差

zuocune 2016-02-24 04:24:14
在鼠标进入Panel的时候,将鼠标指针的图片替换成自己的图片。

实现代码如下:

Screen.Cursors[101]:=LoadCursorFromFile(pChar(v_str+'1.cur'));
Panel1.Cursor := 101;


功能已经实现,但是更换后的指针图片跟鼠标原来的箭头图片,坐标位置会有偏差。

更换后的指针图片会比原来的箭头图片要往上,10个像素,很难受。

有没有碰到这个问题的大神,求解救思路...

我自己试过修改图片像素,图案的方式,都不能解救...
...全文
2284 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lvjun 2017-09-12
  • 打赏
  • 举报
回复
这个是有原因的,因为鼠标的资源文件 ,左上角并不是原点,你直接绘制鼠标,自然会出现偏差。 在鼠标资源中,是有xHotspot和yHotspot的, lpIcon : TIconInfo   GetIconInfo(lpCur.hCursor, lpIcon);   DrawIcon或者DrawIconEx绘制的时候要除去这个偏差量。
ooolinux 2017-07-03
  • 打赏
  • 举报
回复
ArtCursors软件可以设置光标的Hot Spot,就是光标相对于鼠标所在的(X,Y)点的位置。
jjpweb 2016-02-25
  • 打赏
  • 举报
回复
图片源的问题,换一个试试
fhfanxin 2016-02-24
  • 打赏
  • 举报
回复

var
  CurPos: TPoint;
  ADC: HDC;
  ARect: TRect;
begin
  GetCursorPos(CurPos);
  ADC := GetWindowDC(Self.Handle);
  try
    ARect := Rect(CurPos.x - Self.Left, CurPos.y - Self.Top, CurPos.x - Self.Left + 32, CurPos.y - Self.Top + 32);
    InValidateRect(Self.Handle, @ARect, true);
    DrawIconEx(ADC, ARect.Left, ARect.Top, FIcon, 32, 32, 0, 0, DI_NORMAL);
  finally
    ReleaseDC(Self.Handle, ADC);
  end;
end;


fhfanxin 2016-02-24
  • 打赏
  • 举报
回复
var hcursor:Hicon; begin hcursor:=loadcursorfromFile(PChar('C:\WINDOWS\CURSORS\pen_1.cur')); SetSystemCursor(hcursor,OCR_NORMAl); end; 先用系统自带的CUR文件试试,如果有偏移,那再问 或者试试SetSystemCursor 我纯粹消灭零回复而已

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧