質問: this.pointtoclient( new point( e.x, e.y ) ); で画像と描画位置を決め、 e.graphics.drawimage(img, p); で、そこに画像を描画するのですが、写真によって、同じ1024*768ピクセルなのに、表示される大きさがばらばらです。 graphics.drawimage メソッド (image, point)の説明を読むと、「指定した位置に、指定した image を元の物理サイズで描画します」とあり、「元の物理サイズで描画」に問題があることがわかりました。 質問ですが、「指定した位置に、指定した image をピクセルサイズで描画」するメソッドは何でしょう?探し方が悪いのか、見つけられません。
回答: 「元の物理サイズで描画」ってのは「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で作られてる」かどうか、確かめる事をお勧めします。