为什么我的人像监视器设置上有鼠标光标瑕疵?

我有一个delphi应用程序,通过使用LoadImage(Hinstance, PWideChar(Name), IMAGE_CURSOR, 0, 0, LR_DEFAULTCOLOR);加载自定义鼠标光标LoadImage(Hinstance, PWideChar(Name), IMAGE_CURSOR, 0, 0, LR_DEFAULTCOLOR); 。 这些自定义游标的大小为32×32,48×48或64×64,具体取决于用户的select。 如果我加载自定义光标并将鼠标移动到应用程序之外,则光标将变为默认的(箭头)窗口。 但是这个箭头现在在光标的底部有文物。 此外,工件会根据以前加载的自定义光标和其包含的大小(例如64×64矩形)而发生变化。

我试图截图,但不出现文物。 所以我画这个现象给你一个线索是怎么样的。

在这里输入图像说明

到目前为止,我发现了什么。 以下列表中的所有点都必须应用:

  • 只有当自定义鼠标光标> 32×32时才会发生这种情况。
  • 它只发生在纵向模式下的显示器设置。
  • 只有鼠标阴影处于活动状态才会发生。
  • 只有当鼠标线路被closures时才会发生。
  • 只有在使用NVIDIA显卡时才会发生。
  • 只有在DPI设置为100%时才会发生。

下面的代码示例显示了游标的问题。 只需创build一个新的VCL Form项目并将其添加到相应的单元。

 unit Unit6; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs; const crMyCursor = 1; type TForm6 = class(TForm) procedure FormShow(Sender: TObject); end; var Form6: TForm6; implementation {$R *.dfm} procedure TForm6.FormShow(Sender: TObject); begin Screen.Cursors[crMyCursor] := LoadImage(Hinstance, PWideChar('MAINICON'), IMAGE_ICON, 0, 0, LR_DEFAULTCOLOR); Screen.Cursor := crMyCursor; end; end. 

更新:它曾经是与NVIDIAgraphics卡有关的问题。 下面的graphics卡出现了伪影:GeForce 9600 GT,GeForce GT 630和GeForce GTX 660.我还testing了Intel Onboardgraphics卡和ATIgraphics卡,并且这些设置中不包含工件。

那么谁能告诉我为什么这些文物出现,我如何摆脱它们?

这是由于图形驱动程序中的错误,以及一些ATI用户也会出现类似的情况 。
但是,这不是一个Delphi甚至自定义鼠标问题。

我经历了完全相同的现象(鼠标光标下的怪异线条),但在桌面上,在我的两边,肖像翻转的显示器(注意,我正在运行一个gtx680,所以你的列表并不详尽)。

问题在于阴影。 这两个答案在这里工作,但显然如果你喜欢阴影当前最好的答案(翻转显示器回到风景,然后恢复在Keep these settings?提示)将更适合你。