windows - 为什么我在纵向显示器设置上有鼠标光标伪影?

标签 windows delphi cursor nvidia monitor

我有一个 delphi 应用程序,它使用 LoadImage(Hinstance, PWideChar(Name), IMAGE_CURSOR, 0, 0, LR_DEFAULTCOLOR); 加载自定义鼠标光标。这些自定义光标的大小为 32x32、48x48 或 64x64,具体取决于用户的选择。如果我加载自定义光标并将鼠标移到应用程序之外,光标将更改为 Windows 默认(箭头)光标。但是这个箭头现在在光标的底部有瑕疵。 此外,工件会根据先前加载的自定义光标及其包含在例如中的大小而变化。 64x64 矩形。

我试图截取屏幕截图,但上面没有出现伪影。所以我画了这个现象来给你一个线索它看起来像什么。

enter image description here

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

  • 只有当自定义鼠标光标大于 32x32 时才会发生。
  • 它只发生在纵向模式的显示器设置上。
  • 仅当鼠标阴影处于事件状态时才会发生。
  • 只有在鼠标轨迹关闭时才会发生。
  • 只有在拥有 NVIDIA 显卡时才会发生这种情况。
  • 仅当 DPI 设置为 100% 时才会发生。

以下代码示例显示了光标的问题。新建一个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.

更新: 它曾经是与 NVIDIA 显卡相关的问题。以下显卡出现伪影:GeForce 9600 GT、GeForce GT 630 和 GeForce GTX 660。我还测试了 Intel 板载显卡和 ATI 显卡,这些设置没有出现伪影。

那么谁能告诉我为什么会出现这些工件以及我如何摆脱它们?

最佳答案

这是由于图形驱动程序中的错误和 similar things occur for some ATI users还有。
但是,这不是 Delphi 或自定义鼠标的问题。

我遇到了完全相同的现象(鼠标光标下有奇怪的线条伪影),但就在桌面上,在我这边,纵向翻转的显示器(注意我运行的是 gtx680,所以你的列表不是'也不详尽)。

问题与阴影有关。 answers here工作,但显然,如果您喜欢阴影,则当前最佳答案(将显示器翻转回横向,然后在 Keep these settings? 提示处恢复)会更适合您。

关于windows - 为什么我在纵向显示器设置上有鼠标光标伪影?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26910546/

相关文章:

windows - docker 错误 : Container command not found or does not exist when running from Win10

node.js - 'npm install' 在 Windows 上非常慢

Delphi - 可以indy TIdTCPClient同时发送/接收大流

Delphi TPath.GetTempPath 结果被裁剪

java - 是否有用于 SWT 的预制放大镜光标?

Windows Batch 读取文件并将行解析为标记和变量

c++ - 检查特定应用程序的窗口是否处于最小化状态?

delphi - 如何以编程方式探测CPU的硬件虚拟化能力?

colors - 插入模式下 Vim CursorLine 颜色变化

css - 边缘自定义光标不起作用