VB6Parse / Library / Resources / loadpicture

VB6 Library Reference

LoadPicture Function

Returns a picture object (StdPicture) containing an image from a file or memory.

Syntax

LoadPicture([filename] [, size] [, colordepth] [, x, y])

Parameters

Return Value

Returns a StdPicture object: - For valid filename: Picture object containing the loaded image - For empty string (""): Nothing (unloads picture) - For no parameters: Empty picture object - Object can be assigned to Picture properties of controls - Object implements IPicture interface

Remarks

The LoadPicture function loads graphics from files:

Typical Uses

  1. Load Image to PictureBox
Picture1.Picture = LoadPicture("C:\Images\logo.bmp")
  1. Load Image to Form Background
Me.Picture = LoadPicture(App.Path & "\background.bmp")
  1. Load Icon to Image Control
Image1.Picture = LoadPicture("C:\Icons\app.ico")
  1. Clear/Unload Picture
Picture1.Picture = LoadPicture("")
  1. Dynamic Image Loading
Picture1.Picture = LoadPicture(imageFiles(index))
  1. Conditional Image Loading
If fileExists Then
imgStatus.Picture = LoadPicture("ok.bmp")
Else
imgStatus.Picture = LoadPicture("error.bmp")
End If
  1. Button Icons
cmdSave.Picture = LoadPicture("save.ico")
  1. Animation Frame Loading
For i = 1 To 10
frames(i) = LoadPicture("frame" & i & ".bmp")
Next i

Basic Examples

Example 1: Basic Picture Loading

' Load a bitmap to a picture box
Picture1.Picture = LoadPicture("C:\MyApp\logo.bmp")

' Load using relative path
Picture1.Picture = LoadPicture(App.Path & "\images\banner.bmp")

' Load icon to image control
Image1.Picture = LoadPicture(App.Path & "\icon.ico")

Example 2: Clearing Pictures

' Unload picture to free memory
Picture1.Picture = LoadPicture("")

' Alternative way to clear
Set Picture1.Picture = LoadPicture()

' Clear form background
Me.Picture = LoadPicture("")

Example 3: Error Handling

On Error Resume Next
Picture1.Picture = LoadPicture(filename)
If Err.Number <> 0 Then
MsgBox "Could not load image: " & filename, vbCritical
Picture1.Picture = LoadPicture("") ' Clear on error
Err.Clear
End If

Example 4: File Existence Check

Dim picPath As String
picPath = App.Path & "\logo.bmp"

If Dir(picPath) <> "" Then
Picture1.Picture = LoadPicture(picPath)
Else
MsgBox "Image file not found!", vbExclamation
End If

Common Patterns

Pattern 1: SafeLoadPicture

Function SafeLoadPicture(ByVal filename As String, _
ByVal ctrl As Object) As Boolean
On Error Resume Next
Set ctrl.Picture = LoadPicture(filename)
SafeLoadPicture = (Err.Number = 0)
Err.Clear
End Function

Pattern 2: ImageSwitcher

Sub SwitchImage(ByVal imageIndex As Long)
Dim imageFiles As Variant
imageFiles = Array("image1.bmp", "image2.bmp", "image3.bmp")

If imageIndex >= 0 And imageIndex <= UBound(imageFiles) Then
Picture1.Picture = LoadPicture(App.Path & "\" & imageFiles(imageIndex))
End If
End Sub

Pattern 3: PreloadImages

Dim preloadedPics() As StdPicture

Sub PreloadImages()
Dim i As Long
ReDim preloadedPics(1 To 5)

For i = 1 To 5
Set preloadedPics(i) = LoadPicture("pic" & i & ".bmp")
Next i
End Sub

Sub ShowImage(ByVal index As Long)
Set Picture1.Picture = preloadedPics(index)
End Sub

Pattern 4: TogglePicture

Dim currentState As Boolean

Sub TogglePicture()
If currentState Then
Picture1.Picture = LoadPicture("on.bmp")
Else
Picture1.Picture = LoadPicture("off.bmp")
End If
currentState = Not currentState
End Sub

Pattern 5: LoadPictureWithDefault

Function LoadPictureWithDefault(ByVal filename As String, _
ByVal defaultFile As String) As StdPicture
On Error Resume Next
Set LoadPictureWithDefault = LoadPicture(filename)
If Err.Number <> 0 Then
Set LoadPictureWithDefault = LoadPicture(defaultFile)
End If
Err.Clear
End Function

Pattern 6: ClearAllPictures

Sub ClearAllPictures(frm As Form)
Dim ctrl As Control

For Each ctrl In frm.Controls
If TypeOf ctrl Is PictureBox Or TypeOf ctrl Is Image Then
ctrl.Picture = LoadPicture("")
End If
Next ctrl

frm.Picture = LoadPicture("")
End Sub

Pattern 7: LoadFromResourceOrFile

Function LoadFromResourceOrFile(ByVal resID As Long, _
ByVal filename As String) As StdPicture
On Error Resume Next

' Try resource first
Set LoadFromResourceOrFile = LoadResPicture(resID, vbResBitmap)

' Fall back to file
If Err.Number <> 0 Then
Set LoadFromResourceOrFile = LoadPicture(filename)
End If
Err.Clear
End Function

Pattern 8: ButtonImageState

Sub SetButtonState(btn As CommandButton, enabled As Boolean)
If enabled Then
btn.Picture = LoadPicture(App.Path & "\btn_enabled.ico")
btn.Enabled = True
Else
btn.Picture = LoadPicture(App.Path & "\btn_disabled.ico")
btn.Enabled = False
End If
End Sub

Pattern 9: LoadPictureIfExists

Function LoadPictureIfExists(ByVal filename As String) As StdPicture
If Dir(filename) <> "" Then
Set LoadPictureIfExists = LoadPicture(filename)
Else
Set LoadPictureIfExists = LoadPicture() ' Empty picture
End If
End Function

Pattern 10: CachedPictureLoader

Dim pictureCache As New Collection

Function LoadPictureCached(ByVal filename As String) As StdPicture
On Error Resume Next

' Try to get from cache
Set LoadPictureCached = pictureCache(filename)

' If not in cache, load and cache it
If Err.Number <> 0 Then
Set LoadPictureCached = LoadPicture(filename)
pictureCache.Add LoadPictureCached, filename
End If
Err.Clear
End Function

Advanced Examples

Example 1: PictureManager Class

' Class: PictureManager
Private m_pictures As Collection
Private m_basePath As String

Private Sub Class_Initialize()
Set m_pictures = New Collection
m_basePath = App.Path & "\images\"
End Sub

Public Sub LoadPicture(ByVal name As String, ByVal filename As String)
Dim pic As StdPicture
On Error Resume Next

Set pic = VBA.LoadPicture(m_basePath & filename)
If Err.Number = 0 Then
m_pictures.Add pic, name
Else
Err.Raise vbObjectError + 1000, "PictureManager", _
"Failed to load: " & filename
End If
End Sub

Public Function GetPicture(ByVal name As String) As StdPicture
On Error Resume Next
Set GetPicture = m_pictures(name)
If Err.Number <> 0 Then
Err.Raise vbObjectError + 1001, "PictureManager", _
"Picture not found: " & name
End If
End Function

Public Sub ClearAll()
Dim i As Long
For i = m_pictures.Count To 1 Step -1
m_pictures.Remove i
Next i
End Sub

Public Property Get Count() As Long
Count = m_pictures.Count
End Property

Private Sub Class_Terminate()
ClearAll
Set m_pictures = Nothing
End Sub

Example 2: Image Slideshow

' Form with Picture1, Timer1, cmdNext, cmdPrev
Dim imageFiles() As String
Dim currentIndex As Long

Private Sub Form_Load()
LoadImageList
currentIndex = 0
ShowCurrentImage
Timer1.Interval = 3000 ' 3 seconds
Timer1.Enabled = True
End Sub

Private Sub LoadImageList()
imageFiles = Array( _
"slide1.bmp", _
"slide2.bmp", _
"slide3.bmp", _
"slide4.bmp", _
"slide5.bmp" _
)
End Sub

Private Sub ShowCurrentImage()
On Error Resume Next
Picture1.Picture = LoadPicture(App.Path & "\slides\" & imageFiles(currentIndex))
If Err.Number <> 0 Then
Picture1.Cls
Picture1.Print "Image not found"
End If
End Sub

Private Sub Timer1_Timer()
NextImage
End Sub

Private Sub cmdNext_Click()
NextImage
End Sub

Private Sub cmdPrev_Click()
PrevImage
End Sub

Private Sub NextImage()
currentIndex = currentIndex + 1
If currentIndex > UBound(imageFiles) Then
currentIndex = 0
End If
ShowCurrentImage
End Sub

Private Sub PrevImage()
currentIndex = currentIndex - 1
If currentIndex < 0 Then
currentIndex = UBound(imageFiles)
End If
ShowCurrentImage
End Sub

Example 3: Dynamic Button Icons

' Form with command buttons array: cmdAction(0 to 4)
Private Type ButtonConfig
caption As String
iconFile As String
enabled As Boolean
End Type

Private buttonConfigs() As ButtonConfig

Private Sub Form_Load()
InitializeButtons
ApplyButtonConfigs
End Sub

Private Sub InitializeButtons()
ReDim buttonConfigs(0 To 4)

With buttonConfigs(0)
.caption = "New"
.iconFile = "new.ico"
.enabled = True
End With

With buttonConfigs(1)
.caption = "Open"
.iconFile = "open.ico"
.enabled = True
End With

With buttonConfigs(2)
.caption = "Save"
.iconFile = "save.ico"
.enabled = False
End With

With buttonConfigs(3)
.caption = "Print"
.iconFile = "print.ico"
.enabled = False
End With

With buttonConfigs(4)
.caption = "Exit"
.iconFile = "exit.ico"
.enabled = True
End With
End Sub

Private Sub ApplyButtonConfigs()
Dim i As Long
Dim iconPath As String

For i = 0 To UBound(buttonConfigs)
With cmdAction(i)
.caption = buttonConfigs(i).caption
.enabled = buttonConfigs(i).enabled

iconPath = App.Path & "\icons\" & buttonConfigs(i).iconFile
If Dir(iconPath) <> "" Then
.Picture = LoadPicture(iconPath)
End If
End With
Next i
End Sub

Public Sub SetButtonEnabled(ByVal index As Long, ByVal enabled As Boolean)
If index >= 0 And index <= UBound(buttonConfigs) Then
buttonConfigs(index).enabled = enabled
cmdAction(index).enabled = enabled
End If
End Sub

Example 4: Status Indicator

' Form with imgStatus (Image control)
Public Enum StatusType
stIdle = 0
stProcessing = 1
stSuccess = 2
stWarning = 3
stError = 4
End Enum

Private statusIcons() As StdPicture
Private currentStatus As StatusType

Private Sub Form_Load()
LoadStatusIcons
SetStatus stIdle
End Sub

Private Sub LoadStatusIcons()
Dim basePath As String
basePath = App.Path & "\icons\"

ReDim statusIcons(0 To 4)

On Error Resume Next
Set statusIcons(stIdle) = LoadPicture(basePath & "idle.ico")
Set statusIcons(stProcessing) = LoadPicture(basePath & "processing.ico")
Set statusIcons(stSuccess) = LoadPicture(basePath & "success.ico")
Set statusIcons(stWarning) = LoadPicture(basePath & "warning.ico")
Set statusIcons(stError) = LoadPicture(basePath & "error.ico")

If Err.Number <> 0 Then
MsgBox "Warning: Some status icons could not be loaded", vbExclamation
Err.Clear
End If
End Sub

Public Sub SetStatus(ByVal newStatus As StatusType)
currentStatus = newStatus

If newStatus >= 0 And newStatus <= UBound(statusIcons) Then
If Not statusIcons(newStatus) Is Nothing Then
Set imgStatus.Picture = statusIcons(newStatus)
End If
End If
End Sub

Public Function GetStatus() As StatusType
GetStatus = currentStatus
End Function

Private Sub Form_Unload(Cancel As Integer)
Dim i As Long
For i = 0 To UBound(statusIcons)
Set statusIcons(i) = Nothing
Next i
End Sub

Error Handling

' Error 53: File not found
On Error Resume Next
Picture1.Picture = LoadPicture("nonexistent.bmp")
If Err.Number = 53 Then
MsgBox "File not found!"
End If

' Error 481: Invalid picture
Picture1.Picture = LoadPicture("corrupt.bmp")
If Err.Number = 481 Then
MsgBox "Invalid or corrupt image file!"
End If

' Error 7: Out of memory (very large images)
Picture1.Picture = LoadPicture("huge.bmp")
If Err.Number = 7 Then
MsgBox "Insufficient memory to load image!"
End If

' Safe loading pattern
Function TryLoadPicture(ByVal filename As String, _
ByRef pic As StdPicture) As Boolean
On Error Resume Next
Set pic = LoadPicture(filename)
TryLoadPicture = (Err.Number = 0)
Err.Clear
End Function

Performance Considerations

Best Practices

  1. Always handle errors when loading pictures (file may not exist)
  2. Check file existence before loading (use Dir function)
  3. Use relative paths (App.Path) for portability
  4. Release memory by setting picture objects to Nothing when done
  5. Preload frequently used images for better performance
  6. Clear pictures with LoadPicture("") not by setting to Nothing directly
  7. Validate file extensions before attempting to load
  8. Use resource files (LoadResPicture) for embedded images
  9. Handle Out of Memory errors for large images
  10. Consider image size - large BMPs consume lots of memory
Function Purpose Return Type Notes
LoadPicture Load from file StdPicture Supports BMP, ICO, CUR, WMF, EMF
LoadResPicture Load from resources StdPicture Embedded in compiled EXE
SavePicture Save to file N/A (Sub) Inverse of LoadPicture
Set statement Assign picture N/A Used to assign picture objects

LoadPicture vs LoadResPicture

' LoadPicture - from file (requires external file)
Picture1.Picture = LoadPicture("logo.bmp")

' LoadResPicture - from resources (embedded in EXE)
Picture1.Picture = LoadResPicture(101, vbResBitmap)

When to use each: - LoadPicture: Images that change, user-selected files, development - LoadResPicture: Static images, distribution (no external files), resources

Platform Notes

Limitations

← Back to Resources | View all functions