C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: ピクチャボックスに画像が拡大されて表示される


(過去ログ 110 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■65213 / inTopicNo.1)  ピクチャボックスに画像が拡大されて表示される
  
□投稿者/ レヴィ (1回)-(2013/02/13(Wed) 11:42:28)

分類:[C#] 

フォームにはピクチャボックスとボタンのみ配置しています。
サイズが400x400のピクチャボックスに1024x1024の画像を以下の方法で表示させると拡大されてしまいます。


private void button1_Click(object sender, EventArgs e)
{
// ダイアログから画像のパスを取得
this.openFileDialog1.ShowDialog();
string path = openFileDialog1.FileName;

// 画像を読み込む
Bitmap bmp = new Bitmap(path);

// ピクチャボックスに描画先を作成
this.pictureBox1.Image = new Bitmap(
this.pictureBox1.Width, this.pictureBox1.Height);

// 描画
Graphics g = Graphics.FromImage(this.pictureBox1.Image);
g.DrawImage(bmp, 0, 0);
this.pictureBox1.Refresh();

g.Dispose();
g = null;
}


Imageプロパティに読み込んだ画像のビットマップを直接指定すれば問題ないのですが・・・。
拡大される原因は何でしょうか?

引用返信 編集キー/
■65214 / inTopicNo.2)  Re[1]: ピクチャボックスに画像が拡大されて表示される
□投稿者/ shu (183回)-(2013/02/13(Wed) 11:51:24)
No65213 (レヴィ さん) に返信
> Imageプロパティに読み込んだ画像のビットマップを直接指定すれば問題ないのですが・・・。
> 拡大される原因は何でしょうか?
縮小されないということでしょうか?

400x400
の描画領域に
800x800
の画像を描画した場合
画像がピクチャーボックスにぴったり収まる => 縦横それぞれ1/2に縮小
画像が縦横それぞれ半分はみ出る => 拡大も縮小もなし
画像が縦横それぞれ1/4づつしか表示されない => 縦横それぞれ2倍に拡大
ということになります。
引用返信 編集キー/
■65215 / inTopicNo.3)  Re[2]: ピクチャボックスに画像が拡大されて表示される
□投稿者/ レヴィ (2回)-(2013/02/13(Wed) 13:17:05)
返信有難うございます。

No65214 (shu さん) に返信
> ■No65213 (レヴィ さん) に返信
>>Imageプロパティに読み込んだ画像のビットマップを直接指定すれば問題ないのですが・・・。
>>拡大される原因は何でしょうか?
> 縮小されないということでしょうか?

いえ、普通に原寸大で表示させたいです。

プログラムでは拡大縮小はしていないので、普通に考えて元画像の左上0,0から縦横400の領域がビッタリ収まるように表示されるはずですが、実際はその領域よりも小さい(例えば縦横300)ものがピクチャボックスに合うように拡大されて表示されています。
引用返信 編集キー/
■65217 / inTopicNo.4)  Re[3]: ピクチャボックスに画像が拡大されて表示される
□投稿者/ shu (184回)-(2013/02/13(Wed) 14:36:43)
No65215 (レヴィ さん) に返信
>
> プログラムでは拡大縮小はしていないので、普通に考えて元画像の左上0,0から縦横400の領域がビッタリ収まるように表示されるはずですが、実際はその領域よりも小さい(例えば縦横300)ものがピクチャボックスに合うように拡大されて表示されています。

そうすると画像のDPIと描画領域のDPIが不一致なのではないでしょうか?
引用返信 編集キー/
■65218 / inTopicNo.5)  Re[4]: ピクチャボックスに画像が拡大されて表示される
□投稿者/ レヴィ (3回)-(2013/02/13(Wed) 14:57:42)
No65217 (shu さん) に返信
> ■No65215 (レヴィ さん) に返信
>>
>>プログラムでは拡大縮小はしていないので、普通に考えて元画像の左上0,0から縦横400の領域がビッタリ収まるように表示されるはずですが、実際はその領域よりも小さい(例えば縦横300)ものがピクチャボックスに合うように拡大されて表示されています。
>
> そうすると画像のDPIと描画領域のDPIが不一致なのではないでしょうか?


ピクチャボックスのDPIを画像のDPIと同じに設定したら原寸大で表示されました。

// ピクチャボックスに描画先を作成
Bitmap dest = new Bitmap(
this.pictureBox1.Width, this.pictureBox1.Height);
dest.SetResolution(bmp.HorizontalResolution, bmp.VerticalResolution);
this.pictureBox1.Image = dest;


ありがとうございました!
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -