プロが教えるわが家の防犯対策術!

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

A 回答 (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

とか。。こういうことではないのでしょうか?
    • good
    • 0
この回答へのお礼

ありがとうございます。

ようやく、Picture.Width/HeightとParent.ScaleWidth/ScaleHeightの違いが理解できました。大変勉強になりました。

元々VB4で作成されたフォームのせいか、PaintPictureする際にもPictureに全画面表示されない等悩みましたが、昨日無事プログラムの改造が完了しました。

連絡遅くなり申し訳ありません。本当に助かりました。
また、よろしくお願いします。

お礼日時:2007/05/02 09:14

> VB のバージョンは?



失礼しました。書いてありましたねm(__;)m
    • good
    • 0

VB のバージョンは?


 # 最初から書いた方が良いですよ。

この記事が参考になりませんか?
VB6と .Net 両方のサンプルコードがあります。
http://www.microsoft.com/japan/msdn/vbasic/migra …
    • good
    • 1
この回答へのお礼

失礼しました。
OSは、WindowsXP SP2
VBは、VB6.0
で開発しています。

上記HP紹介いただき、ありがとうございます。

ただ、今回のケースの場合、イメージデータサイズが異なるため、イメージA(400ピクセル×300ピクセル)の全体表示ができるサイズのImageにイメージB(800×400)を読み込むとPaintPictureでは左上1/4しか表示されません。
ファイル名ではイメージAか、イメージBか判断できないため困っています。助けてください。

お礼日時:2007/04/28 20:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!