4461


Windows フォームアプリで、Form に PictureBox を貼り付けて、

[code]

    this.pictureBox1.Image = Clipboard.GetImage();
    
[/code]

クリップボードのイメージを PictureBox に設定すると、以下のように画像が大きく表示されてしまいます。

![画像の説明をここに入力](https://i.stack.imgur.com/ZTiOA.png)

(左側がイメージコピー元のオリジナルのウィンドウ、右側がクリップボードのイメージを表示したフォームです。ペイントをアクティブウィンドウにして `Alt` +
`PrintScreen`でクリップボードに保存しました)

この現象は、ディスプレイの解像度が 1920 x 1080 の時だけ発生し、1600 x 900 や 1024 x 768
など他の解像度の場合は、同じサイズで表示されました。

ＰＣ環境に依存する要因があると思いますが、  
特定の解像度でオリジナル画像と表示サイズが異なってしまう原因はなんでしょうか。  
また、常にオリジナル画像と同じサイズで表示するためにはどうしたらよいでしょうか？

### 補足:

クリップボードに保存した画像をペイントなどの画像ツールに貼り付けると表示サイズはオリジナルと変わりません。ですので、PictureBoxに表示する際の問題と考えています。


CC BY-SA 3.0
2015-01-12T14:17:16.300
4446
2015-01-15T13:46:41.587
2015-01-15T13:46:41.587
3925
3925
question
c# winforms 画像
クリップボードの画像を表示すると拡大されてしまう。


![すべての項目のサイズを変更する](https://i.stack.imgur.com/ubU0g.jpg)  
の[すべての項目のサイズを変更する]はどうなっていますか？
この設定に従って拡大されたのではと推測しますが…。[すべてのディスプレイで同じ拡大率を使用する]にチェックした上で[小 -
100%]を選択すると確実に拡大を止められます。  
またその場合、質問内容は、利用者のコントロールパネルの設定を無視して画面サイズを維持したいというものでしょうか？
[Windowsフォームにおける自動スケーリング](http://msdn.microsoft.com/ja-
jp/library/ms229605\(v=vs.110\).aspx)に説明がありますが、FormのAutoScaleModeをNoneに設定することで実現できます。（…がそれはそれで困るかな？）

* * *

Windowsはバージョンごとに[High DPI Features](http://msdn.microsoft.com/en-
us/library/dn469266\(v=vs.85\).aspx#high_dpi_features_in_windows)がいろいろあります。Noneにしても拡大されたとのことですが、同じ設定値でも再ログオン後には状況が異なったりもします。（設定変更～再ログオンまではDPI仮想化で動作し、再ログオン時にSystem
DPIが更新されDPI仮想化がキャンセルされる、など。）  
どこまで対応するかで対応方法も変わってきます。とりあえず[Application
Manifest](http://msdn.microsoft.com/en-
us/library/dn469266\(v=vs.85\).aspx#using_an_application_manifest)を付けるだけでもだいぶ改善します。


CC BY-SA 3.0
2015-01-12T23:51:37.763
4461
2015-01-13T10:44:14.467
2015-01-13T10:44:14.467
4236
4236
4446
answer