環境はVB6,WinXPです。
ピクチャボックスコントロールに、
BMPファイルを表示しようとしています。
この時、ピクチャボックスが大きければ、BMPファイルを拡大し、
また、ピクチャボックスが小さければ、BMPファイルを縮小し、
表示したいのです。
ピクチャプロパティにLoadPicture(xxx)を使って、
BMPを表示していますが、
オリジナルのサイズで表示されてしまいます。
また、いろいろ調べた結果、
DLL:StretchBltを使用すれば?と思い、
(1)ピクチャ1にBMPをオリジナルサイズでロード
(2)ピクチャ1よりピクチャ2にStretchBltで拡大/縮小をして表示
としました。
ピクチャ2に上手く表示されているのですが、
ピクチャ1を非表示にすると、ピクチャ2に表示されなくなってしまいます。
皆様、ご助言・ご教授お願いいたします。
> オリジナルのサイズで表示されてしまいます。
サイズを変更しつつ、自分で描画しましょう。
----------
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 のサイズに合わせたり、あるいは
縦横比を維持する/無視するといったことも、自由に行えるかと。
ありがとうございました。
実現できました
ツイート | ![]() |