- ベストアンサー
C#での画像のピクセルサイズでの描画について
- C#で画像を描画する際、物理サイズではなくピクセルサイズで描画する方法を教えてください。
- Graphics.DrawImageメソッドを使用して画像を描画する際、物理サイズではなくピクセルサイズで描画する方法を探しています。
- 指定した位置に、指定した画像をピクセルサイズで描画するメソッドは何でしょうか?探しています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
追記と訂正。 >e.Graphics.DrawImage(img, p); >で、そこに画像を描画するのですが 見落としたけど「画像サイズを指定してない」んですね。 だったらGraphics.DrawImageは「元のbmpファイルの中に書いてある解像度に従って、拡大縮小する」ので「大きさがバラバラ」で表示されますね。 私は「Graphics.DrawImageでは、元画像のサイズを指定するのが常識」だったので「まさか、元画像のサイズを指定しないで、Graphics.DrawImageを呼んでるとは、思いもしなかった」ので、見落としました。 で「Graphics.DrawImageは、元画像のサイズを指定すると1ピクセルを1ピクセルで描画する」ので、当然、そうしているのだとばかり思ってました。 e.Graphics.DrawImage(img, p); を e.Graphics.DrawImage(img, p.X, p.Y, img.Width, img.Height); にして下さい。こうすれば「1ピクセルは1ピクセルで描画」します。 なお、画像のサイズがバラバラな場合に拡大縮小して、すべて1024*768で表示したいなら e.Graphics.DrawImage(img, p.X, p.Y, 1024, 768); にして下さい。
その他の回答 (1)
- chie65536(@chie65535)
- ベストアンサー率44% (8740/19838)
「元の物理サイズで描画」ってのは「1ピクセルを1ピクセルで描画」って意味です。 「元画像が1024*768」であれば、画像は1024*768で表示されます。 もし「表示される大きさがばらばら」って言うなら「読み込んだbmpファイルの画像の大きさがバラバラ」って事で「どの画像も1024*768だと思っていたのは、勘違い」です。 あくまでも「元画像が1024*768」であれば、画像は1024*768で表示されます。 もし「どの画像も、元のピクセルサイズを無視し、1024*768で表示したい」のであれば「元画像が1024*768より小さい場合は拡大処理、元画像が1024*768より大きい場合は縮小処理しなければならない」と言う事です。 もし「画像はどれも1024*768の筈だ。拡大や縮小は要らない」と言い張るなら、現状の通りGraphics.DrawImageメソッドで充分です。 Graphics.DrawImageは拡大縮小は行わず、常に「等倍で、ピクセルサイズで描画」しますから、もし本当に「すべての画像が1024*768で作られてる」なら、すべて同じ大きさで、1024*768の領域に描画される筈です。表示される大きさがバラバラになる事はありません。 一度「本当に、全部の画像が、1024*768で作られてる」かどうか、確かめる事をお勧めします。
お礼
回答ありがとうございます。 >「元の物理サイズで描画」ってのは「1ピクセルを1ピクセルで描画」って意味です。 >「元画像が1024*768」であれば、画像は1024*768で表示されます。 私も、そのような表示を希望するのですが、実際は違うんで困っています。 なお、元画像は1024*768のbmpファイルではなく、1024*768のjpegファイルです。 >一度「本当に、全部の画像が、1024*768で作られてる」かどうか、確かめる事をお勧めします。 確かめました。ためしに2つの写真で確かめましたが、ビューア(Vix)ではちゃんと同じ大きさで表示されますが、C#で作成したソフトでは違った大きさに表示されます。
お礼
再度、回答ありがとうございます。 >e.Graphics.DrawImage(img, p.X, p.Y, img.Width, img.Height); できました!!