1. 程式人生 > >WPFの獲取屏幕分辨率並自適應

WPFの獲取屏幕分辨率並自適應

問題 tracking 分辨率 dock wpf外包 不能 temp width panel

原文: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;//設置窗體高度

或者:(獲取整體)

int SW = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width;
int SH = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height;

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;

盡管使用這些代碼和將窗口的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の獲取屏幕分辨率並自適應