ピクチャボックスの拡大表示

解決


さんたろう  2004-02-03 14:19:02  No: 81806  IP: [192.*.*.*]

ピクチャボックス1に表示させたテキストを
ピクチャボックス2に拡大表示させるには
どのようにしたらよいのでしょうか。
イメージを表示させた場合はわかるのですが、
テキストを表示させたピクチャボックスの拡大の方法が
わかりません。
よろしくお願いいたします。
作業環境はwindows2000  visual basic6.0です。

編集 削除
いちゆ  2004-02-03 14:37:49  No: 81807  IP: [192.*.*.*]

…普通に、たぶんPaintPictureでできない?

編集 削除
さんたろう  2004-02-03 15:28:31  No: 81808  IP: [192.*.*.*]

いちゆさん、回答ありがとうございます。
PaintPictureではピクチャボックス1に読み込んだイメージ(*.bmp等)を
ピクチャボックス2に拡大表示することはできるのですが、
ピクチャボックス1に表示したテキストや線図を拡大することは
可能なのでしょうか?
試してみたのですが、「ピクチャが不正です」というエラーが出てしまいます。

編集 削除
いちゆ  2004-02-03 16:22:43  No: 81809  IP: [192.*.*.*]

ん〜、どういうコード書いたかわからないから…どうしようもない。
StretchBltAPIを使ったほうが、hDCを使うから混乱しないかも。
まぁ、これ以上なんともいえません。

編集 削除
さんたろう  2004-02-03 16:58:37  No: 81810  IP: [192.*.*.*]

いちゆさん、度々の回答ありがとうございます。

以下のようなプログラムでやっております。

Private Sub Command1_Click()

    Text1.Text = "あいうえお"
    Picture1.Print Text1.Text
    Picture2.PaintPicture Picture1.Picture, 0, 0, 400, 400
    
End Sub

編集 削除
いちゆ  2004-02-03 17:38:49  No: 81811  IP: [192.*.*.*]

Picture1.Picture→Picture1.Image にしてみて?
…実は今、実行環境ないから正確なことがいえないけど。
多分、Picture1.PictureはStdPicture関係のクラスのインスタンスを参照していないから、
こういうエラーが出ているんだと思う。

編集 削除
さんたろう  2004-02-03 21:29:47  No: 81812  IP: [192.*.*.*]

Picture1.PictureをPicture1.Imageとして
実行してみたところ、「ピクチャが不正です」というエラーは
でなくなりましたが、ピクチャボックス2には何も
表示されませんでした。
ピクチャボックスのプロパティの値を色々と変えてみたりしたの
ですが、やっぱりうまくいきません。
PaintPictureでは無理なのでしょうか。

編集 削除
魔界の仮面弁士  2004-02-03 22:07:55  No: 81813  IP: [192.*.*.*]

・Pictureプロパティに画像を指定してあった場合は、「ピクチャが不正です」というエラーにはなりません。

・「描画」した内容は、Pictureプロパティではなく、Imageプロパティに保持されます。

・Imageプロパティを使う場合は、AutoRedrawプロパティをTrueにしておく必要があります。

編集 削除
さんたろう  2004-02-03 22:36:31  No: 81814  IP: [192.*.*.*]

魔界の仮面弁士さん、回答ありがとうございます。
ピクチャボックス2のAutoRedrawプロパティをTrueにはしていたのですが、
ピクチャボックス1のAutoRedrawプロパティをFalseにしていたため、
何も表示されていませんでした。Trueにすることで
ピクチャボックス2にピクチャボックス1で表示された
テキスト「あいうえお」が拡大されて表示されました。
ありがとうございました。
ただ、Picture2.PaintPicture Picture1.Image, 0, 0, 400, 400とした場合
文字が縦長になってしまうのですが、それは何故なのでしょうか。
Picture2.PaintPicture Picture1.Image, 0, 0, 400, 100位ですと
ちょうどよい感じになります。
マニュアルを読むと400と100の値の意味はそれぞれ
「描画する部分の幅と高さ」となっていて、*.bmp等のイメージファイルで
あれば、400,400でうまくいくのですが。
ピクチャボックス1及び2のScaleModeの単位はピクセルでやっています。

編集 削除
さんたろう  2004-02-04 10:18:13  No: 81815  IP: [192.*.*.*]

自己レスです。
ピクチャボックス2にピクチャボックス1の文字を
拡大・縮小させるには、ピクチャボックス1の文字画像データを
正確に取得?する必要があったみたいです。
以下のようにすることでうまくできました。
どうもありがとうございました。

Private Sub Command1_Click()

    Text1.Text = "あいうえお"
    Picture1.Print Text1.Text
    
    With Picture1
    
        P1W = .ScaleWidth
        P1H = .ScaleHeight
     
    End With
    
    With Picture2

        P2W = P1W * 4
        P2H = P1H * 4
        Picture2.PaintPicture Picture1.Image, 0, 0, P2W, P2H

    End With
   
End Sub

編集 削除