web-dev-qa-db-ja.com

画面解像度の取得と設定

Visual C#を使用して画面解像度を収集および変更するにはどうすればよいですか?

60

画面の解像度を取得するには、 System.Windows.Forms.Screen クラスを使用します。 Screen.AllScreens プロパティを使用して、システム上のすべてのディスプレイのコレクションにアクセスできます。または、 Screen.PrimaryScreen プロパティを使用してプライマリディスプレイにアクセスできます。

Screenクラスには Bounds というプロパティがあり、これを使用してクラスの現在のインスタンスの解像度を決定できます。たとえば、現在の画面の解像度を決定するには:

Rectangle resolution = Screen.PrimaryScreen.Bounds;

解像度を変更する場合、事態は少し複雑になります。 この記事 (または this one )は、詳細な実装と説明を提供します。お役に立てれば。

82
Donut

C#では、これが解像度画面を取得する方法です。

ボタンのクリックまたはフォームのロード:

string screenWidth = Screen.PrimaryScreen.Bounds.Width.ToString();
string screenHeight = Screen.PrimaryScreen.Bounds.Height.ToString();
Label1.Text = ("Resolution: " + screenWidth + "x" + screenHeight);
10
Ak654

このコードはWPFで完全に機能します。ページの読み込みまたはボタンのクリックで使用できます。

      string screenWidth =System.Windows.SystemParameters.PrimaryScreenWidth.ToString();

      string screenHeight = System.Windows.SystemParameters.PrimaryScreenHeight.ToString();

      txtResolution.Text ="Resolution : "+screenWidth + " X " + screenHeight;
5
Chaithanya

winformsには、コンピューターに接続されているすべてのディスプレイの画面サイズと色深度に関するデータを取得するために使用できるScreenクラスがあります。ドキュメントページは次のとおりです。 http://msdn.Microsoft.com/en-us/library/system.windows.forms.screen.aspx

画面の解像度を変更するのは難しいです。そうでなければフックするネイティブコードをラップするResolutionサードパーティクラスがあります。 CResolutionのネストされたクラスを使用して、画面の解像度を新しい高さと幅に設定します。ただし、これはディスプレイが実際にサポートする高さ/幅の組み合わせ(800 x 600、1024 x 768など、817 x 435ではない)でのみ機能することを理解してください。

1
KeithS

画面解像度を収集する場合は、WPFウィンドウ内で次のコードを実行できます(ウィンドウはthisが参照するものです)。

System.Windows.Media.Matrix m = PresentationSource.FromVisual(this).CompositionTarget.TransformToDevice;
Double dpiX = m.M11 * 96;
Double dpiY = m.M22 * 96;
0

私はこれを理解しようとして多くの時間を費やしました、C#オブジェクトへの呼び出しが行われたときにスケーリングファクタが時々125%または150%であるため、スケーリングファクタを持つデバイスは実際の画面サイズを取得するのが非常に困難です現在値を返すことはできませんので、スケーリング係数を取得して乗数を適用するためにWindows API呼び出しを行う必要があります、私が見つけた唯一の非WPFアプリの動作方法はこちらです

https://stackoverflow.com/a/21450169

0
Oscar Marin