VB6 フォームを画像として保存したい への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 KOZ  (社会人) 投稿日時 2025/3/28 19:55:49
非表示の PictureBox を追加し、フォームの画像を転送して SavePicture すればよいです。

Option Explicit

Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, _
                                             ByVal x As LongByVal y As Long, _
                                             ByVal nWidth As LongByVal nHeight As Long, _
                                             ByVal hSrcDC As Long, _
                                             ByVal xSrc As LongByVal ySrc As Long, _
                                             ByVal dwRop As LongAs Long
Private Const SRCCOPY As Long = &HCC0020

Private Sub SaveFormAsImage()
    Dim pic As PictureBox
    Set pic = Me.Controls.Add("VB.PictureBox""picTemp")

    ' ScaleMode をピクセル単位に設定 
    Me.ScaleMode = vbPixels
    pic.ScaleMode = vbPixels

    ' PictureBox のサイズをフォームに合わせる 
    pic.Width = Me.ScaleWidth
    pic.Height = Me.ScaleHeight
    pic.AutoRedraw = True  ' 描画を有効にする 

    ' フォームの内容を PictureBox にコピー 
    BitBlt pic.hDC, 0, 0, Me.ScaleWidth, Me.ScaleHeight, Me.hDC, 0, 0, SRCCOPY
    pic.Refresh

    ' 画像を保存 
    SavePicture pic.Image, "Z:\form_image.bmp"

    ' 一時 PictureBox の削除 
    Me.Controls.Remove "picTemp"
End Sub

Private Sub Command1_Click()
    SaveFormAsImage
    MsgBox "画像を保存しました", vbInformation
End Sub
投稿者 よんす  (社会人) 投稿日時 2025/3/25 08:58:48
VB6についての質問になります。とあるフォームを2つ表示させています。これらのフォームの外観を画像(jpg,png,bitmapなんでもよいです)として
PC内に動的に保存したいのですが、何か方法はありますでしょうか。ネットを探してもそれらしい記事がなくて。。宜しくお願いします。