簡體   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