程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> [C# 開發技巧系列]如何動態設置屏幕分辨率

[C# 開發技巧系列]如何動態設置屏幕分辨率

編輯:C#入門知識

因為最近在MSDN論壇和stackflow中看到一些朋友經常問到這個問題,所以寫這篇文章來幫助大家遇到相同問題的時候可以很快的得到解決,下面就不啰嗦了,直接看代碼如何解決這個問題的。

首先,大家應該明確,現在沒有可用的API來給我們動態地設置屏幕分辨率,我們要實現這個需求,我們只能在C#程序中調用 函數來解決這個問題的,這裡用C#代碼調用Win32 API 就涉及到一個問題的,即.NET 互操作性的問題,關於這個大家可以參考我的互操作性系列文章。這裡我就不過多解釋了。

我們要解決這個問題,首先大家肯定也會遇到一個經常遇到的問題,即如何獲得用戶的分辨率,對於這個問題,.NET中提供的單獨的類給我們調用,我們可以使用Screen這個類,具體看下面的示例代碼:

 screen =.PrimaryScreen;
           int screenWidth== screen.Bounds.Height;

然後就是如何改變屏幕的分辨率呢?要更改顯示設置可以通過使用兩個 Win32 API 來完成,這兩個 API 都具有指向 DEVMODE 結構的指針,它們分別包含與顯示設置有關的所有信息:

  • 使用 EnumDisplaySettings 讀取當前顯示設置,並枚舉所有受支持的顯示設置。

  • 使用 ChangeDisplaySettings 切換到新的顯示設置。

第一步、我們要先定義DEVMODE 結構體,該結構的結構必須與DEVMODE的結構一致,下面是C#中對DEVMODE 結構體的定義代碼:

View Code

第二步、在托管環境下對Win 32 函數進行聲明:

View Code

第三步、調用EnumDisplaySettings和ChangeDisplaySettings這兩個函數來實現動態改變屏幕分辨率,具體代碼如下:

View Code

為了大家更加形象地看到程序的運行結果,下面是一個演示效果:

實現源代碼下載:動態設置屏幕分辨率.zip

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved