因爲這不是你想了解的屏幕尺寸,而不是窗口的大小,你可以使用SystemParameters.PrimaryScreenWidth
和SystemParameters.PrimaryScreenHeight
。
您可能還會發現使用窗口尺寸SystemParameters.WindowCaptionHeight
,SystemParameters.ResizeFrameHorizontalBorderHeight
和SystemParameters.ResizeFrameVerticalBorderWidth
進行一些計算很有用。
所有這些與標準窗口都可以正常工作,如果您使用'ToolWindow'WindowStyle,則可能需要其他值。
請注意,根據操作系統(Windows XP和Windows Vista中至少),提供的數字可能是「奇怪」,因爲它們與DPI參數我有時發現很難理解(在Windows Vista中我開發規模一個針對Windows XP的程序,兩者的行爲不一樣)。當然,如果你有寬屏幕(你的情況),DPI參數在Windows Vista上自動更改,並且不是默認的96 DPI。要解決這些問題,請查看PresentationSource
及其成員CompositionTarget
。
以下代碼將爲您提供真實的座標/大小,而不是DPI設置更改的座標/大小。
var PS = PresentationSource.FromVisual(MyWindow);
var realX = myX* PS.CompositionTarget.TransformToDevice.M11;
var realY = myY* PS.CompositionTarget.TransformToDevice.M22;
現在顯示爲不同的屏幕分辨率(1366 X 666),但仍是不正確的屏幕分辨率 – Prem
102像素,菜單+狀態欄似乎並不奇怪。 –