• 締切済み

LoadPictureしたイメージデータのサイズを知りたい

VB6で作成したプログラムにおいて、サイズが異なるイメージデータをLoadPictureでImageに一旦読込み、PaintPictureで同じPictureBoxに拡大して転送したいのですが、PaintPictureで全データを転送するにはイメージデータのサイズがわからないと全データが転送できません。 LoadPictureでImageに読込んだ場合に、データのサイズ(Width・Heightまたはデータ量)を確認する方法を教えてください。

みんなの回答

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

いまいち何がやりたいのか私が正しく理解できている自身が無いのですが... Image1.Picture.Width とか Image1.Picture.Height などで画像のサイズは 求められますよ。 単位を Pixel でということなら ScaleX、ScaleY メソッドで単位変換を 行います。   With Image1     .Picture = LoadPicture("C:\Sample.bmp")     x = Int(ScaleX(.Picture.Width, vbHimetric, vbPixels))     y = Int(ScaleY(.Picture.Height, vbHimetric, vbPixels))   End With   MsgBox CStr(x) & " × " & CStr(y) & "pix" こんな感じで Image コントロールの Picture のサイズを Pixel で求める ことができます。ここまでで、当初ご質問のサイズ取得は解決しませんか? これを使って2倍に拡大して PaintPicture したいなら、   With Picture1     .AutoRedraw = True     ’Picture1 で指定する単位も Pixel にする     .ScaleMode = vbPixels     .PaintPicture Image1.Picture, 0, 0, x * 2, y * 2, 0, 0, x, y   End With とか。。こういうことではないのでしょうか?

TAGAYAN
質問者

お礼

ありがとうございます。 ようやく、Picture.Width/HeightとParent.ScaleWidth/ScaleHeightの違いが理解できました。大変勉強になりました。 元々VB4で作成されたフォームのせいか、PaintPictureする際にもPictureに全画面表示されない等悩みましたが、昨日無事プログラムの改造が完了しました。 連絡遅くなり申し訳ありません。本当に助かりました。 また、よろしくお願いします。

すると、全ての回答が全文表示されます。
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

> VB のバージョンは? 失礼しました。書いてありましたねm(__;)m

すると、全ての回答が全文表示されます。
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

VB のバージョンは?  # 最初から書いた方が良いですよ。 この記事が参考になりませんか? VB6と .Net 両方のサンプルコードがあります。 http://www.microsoft.com/japan/msdn/vbasic/migration/tips/Image/

TAGAYAN
質問者

お礼

失礼しました。 OSは、WindowsXP SP2 VBは、VB6.0 で開発しています。 上記HP紹介いただき、ありがとうございます。 ただ、今回のケースの場合、イメージデータサイズが異なるため、イメージA(400ピクセル×300ピクセル)の全体表示ができるサイズのImageにイメージB(800×400)を読み込むとPaintPictureでは左上1/4しか表示されません。 ファイル名ではイメージAか、イメージBか判断できないため困っています。助けてください。

すると、全ての回答が全文表示されます。

関連するQ&A