繁体   English   中英

C#设置光标位置-WinForms和WPF的不同结果

[英]C# Setting cursor position - different results with WinForms and WPF

我有一个奇怪的问题。 我正在尝试使用WPF设置光标位置。 到现在为止还挺好。 问题如下:

在我的计算机屏幕(1920x1080,100%窗口缩放)上,一切正常,但是在我的笔记本电脑(3000x2000,200%窗口缩放)上,我遇到了一些问题。 由于比例因子的原因,“新分辨率”为1500x1000(因为200%的每个像素都是“两倍大”)。

当我使用WinForms将光标设置为750、500时,光标会出现在屏幕的正中间,但是当我使用WPF将光标位置设置为同一点时,光标会出现在左上方。

因此,显然在设置光标位置时,WinForms使用的分辨率为1500x1000,WPF使用的分辨率为3000x2000 ...

他们为什么在这里使用不同的分辨率? 这对我来说没有意义。 因为当我阅读屏幕宽度和高度时

System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width // and Height, WinForms

System.Windows.SystemParameters.PrimaryScreenWidth // and Heigth,  WPF

两者都显示1500x1000。

谁能帮我? 也许仅仅是WPF / WinForms的不同?

设置光标的代码:

Cursor.Position = p; // with imported System.Windows.Forms;

// or (tryed both)

[DllImport("User32.dll")]
private static extern bool SetCursorPos(int X, int Y);
SetCursorPos(p.X, p.Y);

第一篇文章,所以请不要杀死我!

我不是该主题的专家,但也许:

WPF使用矢量图形来渲染事物,并且对缩放具有本地支持。 如果将Windows中的字体大小更改为200% ,则每个WPF应用程序的大小都会增加2x倍。

但是在WinForms ,如果您未正确编写应用程序,则缩放可能会破坏UI

为避免这种情况,如果运行WinForms应用程序(在Windows 10中),它将仅使用100%字体大小,并将渲染的图像拉伸到200%大小。 因此,您可以看到例如模糊的文本。 如果图像被拉伸-屏幕坐标也必须被拉伸。

但这只是我的猜测,我不是专家。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM