74701


フォームアプリで、アプリを最大化し、フルHDモニターで横幅を取得したところ、1920では無く1936が返ってきました。  
これは正しいのでしょうか？  
縦は1080ではなく1096でした

[code]

    label1.Text = this.Width.ToString();
    label2.Text = this.Height.ToString();
    
[/code]

PCはレッツノート、マウスコンピュータで試しましたが、どちらも同じでした。  
実際に横幅が1936なのでしょうか？


CC BY-SA 4.0
2021-03-16T09:18:15.627
74697
2021-03-18T04:17:20.173
2021-03-18T00:33:01.063
3060
24490
question
c#
ディスプレイの解像度とアプリで取得したウィンドウサイズの値とが一致しないのはなぜ？


最大化を解除すると、ウィンドウ枠の外側に半透明の影が見えると思います。その部分を含んだサイズとなっています。OSバージョンやテーマによっても変わってきます。


CC BY-SA 4.0
2021-03-16T10:00:19.707
74700
2021-03-16T10:00:19.707
4236
74697
answer


プログラムのフォームのサイズとモニターのサイズの情報は別物です。

フォームの縦横サイズプロパティの値には上下左右の枠線部分が含まれますが、表示を最大化した場合には枠線は表示されません。  
その差が違いとなって値が変わってきます。  
例えばこんな記事が参考になるでしょう。  
[フォームのサイズ（幅と高さ）を取得／設定する [C#]](https://johobase.com/windows-form-size/)  
[フォームのクライアント領域のサイズを取得／設定する [C#]](https://johobase.com/windows-form-
clientsize/)

モニターのサイズを取得したいのなら、こちらの記事が参考になるでしょう。  
[ディスプレイの大きさ（画面の領域、解像度）を取得する](https://dobon.net/vb/dotnet/system/displaysize.html)


CC BY-SA 4.0
2021-03-16T10:00:44.700
74701
2021-03-16T10:00:44.700
26370
74697
answer


最大化していない通常のウィンドウだと、上下左右にドラッグして画面サイズを変更できる領域があると思うんですが  
それが8pxあるはず？なので、最大化した時にその部分は画面外にはみ出るので  
1936×1096になるということだと思います。

windowsのテーマをクラシックに変えると、その枠分がわかりやすいかと。


CC BY-SA 4.0
2021-03-18T04:17:20.173
74736
2021-03-18T04:17:20.173
20906
74697
answer