[英]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.