画面サイズを取得する方法はいくつかあります。
最も完全な方法はSystemMetrics
、「coredll.dll」から P/Invoked する必要がある を使用することです。
[DllImport("coredll.dll")]
public static extern int GetSystemMetrics(SYSTEM_METRICS nIndex);
次に、次のように列挙型を作成します。
public enum SYSTEM_METRICS : int
{
SM_CXSCREEN = 0,
SM_CYSCREEN = 1,
SM_CXVSCROLL = 2,
SM_CYHSCROLL = 3,
SM_CYCAPTION = 4,
SM_CXBORDER = 5,
SM_CYBORDER = 6,
SM_CXDLGFRAME = 7,
SM_CYDLGFRAME = 8,
SM_CXICON = 11,
SM_CYICON = 12,
SM_CYMENU = 15,
SM_CXFULLSCREEN = 16,
SM_CYFULLSCREEN = 17,
SM_MOUSEPRESENT = 19,
SM_CYVSCROLL = 20,
SM_CXHSCROLL = 21,
SM_DEBUG = 22,
SM_CXDOUBLECLK = 36,
SM_CYDOUBLECLK = 37,
SM_CXICONSPACING = 38,
SM_CYICONSPACING = 39,
SM_CXEDGE = 45,
SM_CYEDGE = 46,
SM_CXSMICON = 49,
SM_CYSMICON = 50,
SM_XVIRTUALSCREEN = 76,
SM_YVIRTUALSCREEN = 77,
SM_CXVIRTUALSCREEN = 78,
SM_CYVIRTUALSCREEN = 79,
SM_CMONITORS = 80,
SM_SAMEDISPLAYFORMAT = 81,
SM_CXFIXEDFRAME = 7,
SM_CYFIXEDFRAME = 8
}
このフレームワークがすべて設定されていれば、たとえば次のように簡単に幅を取得できます。
int screenWidth = GetSystemMetrics(SYSTEM_METRICS.SM_CXSCREEN);
Console.WriteLine(String.Format("Screen X-res is {0}", screenWidth));
怠惰になりたい場合は、プロジェクトが読み込まれたときにメインフォームの幅と高さを読み取るだけの簡単な解決策があります。
もちろん、フォームを調整する前に幅と高さを読み取るだけの場合は、明らかに画面がちらつきます。