ピクチャボックスにBMPの表示(BMPファイルをストレッチしたい)

解決


グラフ  2007-06-05 00:20:18  No: 136607

環境はVB6,WinXPです。

ピクチャボックスコントロールに、
BMPファイルを表示しようとしています。
この時、ピクチャボックスが大きければ、BMPファイルを拡大し、
また、ピクチャボックスが小さければ、BMPファイルを縮小し、
表示したいのです。

ピクチャプロパティにLoadPicture(xxx)を使って、
BMPを表示していますが、
オリジナルのサイズで表示されてしまいます。

また、いろいろ調べた結果、
DLL:StretchBltを使用すれば?と思い、
(1)ピクチャ1にBMPをオリジナルサイズでロード
(2)ピクチャ1よりピクチャ2にStretchBltで拡大/縮小をして表示
としました。
ピクチャ2に上手く表示されているのですが、
ピクチャ1を非表示にすると、ピクチャ2に表示されなくなってしまいます。

皆様、ご助言・ご教授お願いいたします。


魔界の仮面弁士  2007-06-05 01:18:27  No: 136608

> オリジナルのサイズで表示されてしまいます。
サイズを変更しつつ、自分で描画しましょう。

----------
Dim P As Picture
Set P = LoadPicture(filePath)

Picture1.ScaleMode = vbPixels
Picture2.ScaleMode = vbPixels
Picture3.ScaleMode = vbPixels
Picture1.AutoRedraw = True
Picture2.AutoRedraw = True
Picture3.AutoRedraw = True

'100 % サイズで描画
Picture1.PaintPicture P, 0, 0, _
    Picture1.ScaleX(P.Width, vbHimetric, vbPixels), _
    Picture1.ScaleY(P.Height, vbHimetric, vbPixels)

'縦横それぞれ 50% に縮小
Picture2.PaintPicture P, 0, 0, _
    Picture2.ScaleX(P.Width, vbHimetric, vbPixels) \ 2, _
    Picture2.ScaleY(P.Height, vbHimetric, vbPixels) \ 2

'縦横それぞれ 200% に拡大
Picture3.PaintPicture P, 0, 0, _
    Picture3.ScaleX(P.Width, vbHimetric, vbPixels) * 2, _
    Picture3.ScaleY(P.Height, vbHimetric, vbPixels) * 2
----------

上記を応用すれば、PictureBox のサイズに合わせたり、あるいは
縦横比を維持する/無視するといったことも、自由に行えるかと。


グラフ  2007-06-05 06:01:48  No: 136609

ありがとうございました。
実現できました


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加