1. 程式人生 > >WPF 獲取屏幕分辨率(獲取最大寬高)等

WPF 獲取屏幕分辨率(獲取最大寬高)等

工作區 通過 recorder 是否 操作 start doc clas 靜態屬性

原文:WPF 獲取屏幕分辨率(獲取最大寬高)等

double x = SystemParameters.WorkArea.Width;//得到屏幕工作區域寬度
double y = SystemParameters.WorkArea.Height;//得到屏幕工作區域高度
double x1= SystemParameters.PrimaryScreenWidth;//得到屏幕整體寬度
double y1 = SystemParameters.PrimaryScreenHeight;//得到屏幕整體高度
this.Width = x1;//設置窗體寬度
this.Height = y1;//設置窗體高度

C# 根據不同屏幕分辨率自動適應屏幕
C# 根據不同屏幕分辨率自動適應屏幕

------解決方案--------------------------------------------------------
使用 TableLayoutPanel 布局 + 設置 Dock Anchor 屬性。
------解決方案--------------------------------------------------------
如果只是組件位置的話,可以設置dock和anchor等
如果是還有其他特殊要求,就要自己根據實際分辨率來計算一些屬性了
------解決方案--------------------------------------------------------
窗體的windowstate設置為maximized,載入的時候自動鋪滿屏幕。
如果想做其他操作的話Rectangle rect = System.Windows.Forms.SystemInformation.VirtualScreen;
屏幕寬度=rect.width,高度=rect.height

據WPF外包小編了解,通常,不需要在屏幕上明確定位窗口。而是簡單地將WindowState屬性設置為Normal,並忽略其他所有細節。另一方面,很少會將WindowStartupLocation屬性設置為Manual,並使用Left屬性和Right屬性明確設置窗口的位置。

有時需要更加關註為窗口選擇位置和尺寸。例如,如果創建的窗口太大而不能使用低分辨率顯示器就會遇到麻煩。如果使用一個單窗口應用程序,最好的解決方法是創建可以改變尺寸的窗口。如果使用具有幾個浮動窗口的應用程序,問題就沒有這麽簡單了。

據WPF外包公司小編了解,可以限制窗口的尺寸使其支持最小的顯示器,但是這會讓高端用戶感到沮喪(它們為了在屏幕上一次顯示更多的信息,專門購買更好的顯示器)。對於這種情況,通常希望在運行時決定窗口的最佳位置。為此,需要使用System.Windows.SystemParameters類來檢索有關屏幕真實狀態的基本信息。

SystemParameters類包含一些靜態屬性,從中可以得到各種有關系統設置的信息。例如,可以使用SystemParameters類來決定用戶是否啟用了熱跟蹤(hot tracking)、拖動時顯示窗口內容選項,以及其他選項。對於窗口,SystemParameters類特別有用,因為它提供的兩個屬性可以給出當前屏幕的分辨率:

FullPrimaryScreenHeight屬性和FullPrimaryScreenWidth屬性。這兩個屬性都非常簡單,下面是一些(在運行時將窗口定位在屏幕中央的)演示代碼:

double screeHeight = SystemParameters.FullPrimaryScreenHeight;

double screeWidth = SystemParameters.FullPrimaryScreenWidth;

this.Top = (screenHeight - this.Height) / 2;

this.Left = (screenWidth - this.Width) / 2;

據WPF外包專家了解,盡管使用這些代碼和將窗口的WindowState屬性設置為CenterScreen效果是相同的,但是使用代碼具有實現不同定位邏輯的靈活性,並且可以在合適的時間執行這些定位邏輯。

更好的選擇是使用SystemParameters.WorkArea矩形,使窗口位於可用屏幕區域的中央。工作區域不包括停靠任務欄(以及其他停靠到桌面的工具條)的區域。

double workHeight = SystemParameters.WorkArea.Height;

double workWidth = SystemParameters.WorkArea.Width;

this.Top = (workHeight - this.Height) / 2;

this.Left = (workWidth - this.Width) / 2;

註意:

這兩個示例代碼都存在一個小缺點。當為窗口設置Top屬性時,窗口已經是可見的了,並且窗口會被立即移動和刷新。當使用後面一行代碼設置Left屬性時會發生同樣的過程。因此,視覺敏銳的用戶會看到兩次窗口移動。遺憾的是,Window類沒有提供一個方法同時設置這兩個位置屬性。唯一的解決方法是在窗口創建之後還未通過調用Show( )方法或ShowDialog( )方法顯示之前定位窗口。

WPF 獲取屏幕分辨率(獲取最大寬高)等