質問: Clipboard.GetImage(); ``` クリップボードのイメージを PictureBox に設定すると、以下のように画像が大きく表示されてしまいます。 !画像の説明をここに入力 (左側がイメージコピー元のオリジナルのウィンドウ、右側がクリップボードのイメージを表示したフォームです。ペイントをアクティブウィンドウにして `Alt` + `PrintScreen`でクリップボードに保存しました) この現象は、ディスプレイの解像度が 1920 x 1080 の時だけ発生し、1600 x 900 や 1024 x 768 など他の解像度の場合は、同じサイズで表示されました。 PC環境に依存する要因があると思いますが、 特定の解像度でオリジナル画像と表示サイズが異なってしまう原因はなんでしょうか。 また、常にオリジナル画像と同じサイズで表示するためにはどうしたらよいでしょうか? ### 補足: クリップボードに保存した画像をペイントなどの画像ツールに貼り付けると表示サイズはオリジナルと変わりません。ですので、PictureBoxに表示する際の問題と考えています。
回答: !すべての項目のサイズを変更する の[すべての項目のサイズを変更する]はどうなっていますか? この設定に従って拡大されたのではと推測しますが...。[すべてのディスプレイで同じ拡大率を使用する]にチェックした上で[小 - 100%]を選択すると確実に拡大を止められます。 またその場合、質問内容は、利用者のコントロールパネルの設定を無視して画面サイズを維持したいというものでしょうか? Windowsフォームにおける自動スケーリング.aspx)に説明がありますが、FormのAutoScaleModeをNoneに設定することで実現できます。(...がそれはそれで困るかな?) WindowsはバージョンごとにHigh DPI Features.aspx#high_dpi_features_in_windows)がいろいろあります。Noneにしても拡大されたとのことですが、同じ設定値でも再ログオン後には状況が異なったりもします。(設定変更~再ログオンまではDPI仮想化で動作し、再ログオン時にSystem DPIが更新されDPI仮想化がキャンセルされる、など。) どこまで対応するかで対応方法も変わってきます。とりあえずApplication Manifest.aspx#using_an_application_manifest)を付けるだけでもだいぶ改善します。