VB6 Save Form Image To File






2.40/5 (11 votes)
Save Visual Basic 6 Form's image as seen on screen to a file
Introduction
This is sample code to save image of the VB 6.0 form to a file.
Background
Normally the Form.image property only provides the drawing and printed text in the bitmap image. However if there are image controls, buttons, icons etc on the form then this code pictures those too.
Using the code
There is one single procedure SaveFormImageToFile which is self explainatory. The API BitBlt is used to convert form image to a picture and assign it to picture box. Then the image property of the picture box is used to store the picture using SavePicture methode.
Add a separate Picture box and command button on the form with its properties as given below:
Private Declare Function BitBlt Lib "gdi32" _ (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, _ ByVal nWidth As Long, ByVal nHeight As Long, _ ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, _ ByVal dwRop As Long) As Long Public Sub SaveFormImageToFile(ByRef ContainerForm As Form, _ ByRef PictureBoxControl As PictureBox, _ ByVal ImageFileName As String) Dim FormInsideWidth As Long Dim FormInsideHeight As Long Dim PictureBoxLeft As Long Dim PictureBoxTop As Long Dim PictureBoxWidth As Long Dim PictureBoxHeight As Long Dim FormAutoRedrawValue As Boolean With PictureBoxControl 'Set PictureBox properties .Visible = False .AutoRedraw = True .Appearance = 0 ' Flat .AutoSize = False .BorderStyle = 0 'No border 'Store PictureBox Original Size and location Values PictureBoxHeight = .Height: PictureBoxWidth = .Width PictureBoxLeft = .Left: PictureBoxTop = .Top 'Make PictureBox to size to inside of form. .Align = vbAlignTop: .Align = vbAlignLeft DoEvents FormInsideHeight = .Height: FormInsideWidth = .Width 'Restore PictureBox Original Size and location Values .Align = vbAlignNone .Height = FormInsideHeight: .Width = FormInsideWidth .Left = PictureBoxLeft: .Top = PictureBoxTop FormAutoRedrawValue = ContainerForm.AutoRedraw ContainerForm.AutoRedraw = False DoEvents 'Copy Form Image to Picture Box BitBlt .hDC, 0, 0, _ FormInsideWidth / Screen.TwipsPerPixelX, _ FormInsideHeight / Screen.TwipsPerPixelY, _ ContainerForm.hDC, 0, 0, _ vbSrcCopy DoEvents SavePicture .Image, ImageFileName DoEvents ContainerForm.AutoRedraw = FormAutoRedrawValue DoEvents End With End Sub Private Sub Command1_Click() SaveFormImageToFile frmSaveFormImageToFile, Picture1, "C:\Temp.bmp" End Sub
Otherwise the code will set it.
Points of Interest
Image of the form in VB 6 along with the controls and their images is new.
History
This code is my first upload