掲示板への新規投稿時の注意事項に、
『半角カナは使用しないでください。文字化けの原因になります。』
と書いてあったかと思います。次回以降ご留意ください。
■No99962 (たかし さん) に返信
> この時はBのモニターに画像を表示と
Web アプリだと無理だと思いますが、デスクトップアプリであるならば、
そのためのコードを用意すれば可能でしょう。
単純に B のモニター位置に WinForms のフォームや WPF の Window を置けばよいですし、
あるいは複数画面にまたがる巨大なウィンドウを配置している状況なのであれば、
そのモニター位置に画像を描画するためのコントロールを配置すればよいわけで。
> 言うふうに分けて表示ができるものでしょうか
Screen.AllScreens プロパティを使えば、それぞれのディスプレイを列挙できます。
https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.screen.allscreens
各画面の座標情報は、Bounds プロパティから得られます。
たとえば、こういった変則的な配置の場合でも OK です。
┏━━┯━━━┯┓
┠──┤横長の│┃
┃画縦│画面0│┃
┃面長├┬──┴┨
┃1の││横長の┃
┠──┘│画面2┃
┗━━━┷━━━┛
太線枠(マルチモニターの全領域のサイズ)は、SystemParameters クラスの
VirtualScreenWidth/VirtualScreenHeight プロパティから得られますし、
細線枠(各画面の配置エリア)は、各 Screen の Bounds プロパティから得られます。
このケースでいえば、Bounds プロパティが返す値とは
画面0が主モニターの場合、画面1の Left はマイナス座標になりますし、
画面1が主モニターの場合、画面0の Top がマイナス座標になるわけです。
画面の座標さえわかれば、あとは、目的の「画像」をそれぞれの座標に配置するためのコードを書くだけです。
ただし、列挙された Screen のうちのどれが「B のモニター」に当たるのかについては
各 Screen の DeviceName なり Bounds なりで判断することになりますので、
判定基準についてはあらかじめ、アプリケーションの仕様として定義しておかないと作れないでしょう。
ちなみにその逆に……座標値を指定して、その座標を含む画面を得たい場合には
Screen.FromPoint メソッドを使えば OK です。
また、現在表示されているフォームあるいはコントロールがどの画面上に
存在しているかを調べるために、Screen.FromControl メソッドを使うこともできます。
(複数画面にまたがって配置されていた場合は、より広い方を返します)
|