Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: VB4/32,VB5,VB6
Expertise: Intermediate
Jun 12, 1999



Building the Right Environment to Support AI, Machine Learning and Deep Learning

Retrieving Bitmap properties

The Picture box control does not directly expose any property that returns information on the bitmap currently loaded. You can retrieve this information by calling the GetObject API function, passing it the handle of the bitmap. This value is the Handle property of the IPictureDisp object (which is also the default property for the IPictureDisp object).Here is a procedure that you can easily reuse in all your applications:

Private Type BITMAP
    bmType As Long         ' this must be zero
    bmWidth As Long        ' bitmap width
    bmHeight As Long       ' bitmap height
    bmWidthBytes As Long   ' bytes in horiz raster line
    bmPlanes As Integer    ' number of color planes
    bmBitsPixel As Integer ' number of bits per pixel
    bmBits As Long         ' address of pixel data in memory
End Type
Private Declare Function GetObjectAPI Lib "gdi32" Alias "GetObjectA" (ByVal _
    hObject As Long, ByVal nCount As Long, lpObject As Any) As Long

' NOTE: VB4 users should convert the last two argument to As Variant

Sub GetBitmapInfo(ByVal handle As Long, width As Long, height As Long, _
    Optional colorPlanes As Long, Optional bitsPerPixel As Long )
    Dim bmp As BITMAP
    GetObjectAPI handle, Len(bmp), bmp
    width = bmp.bmWidth
    height = bmp.bmHeight
    colorPlanes = bmp.bmPlanes
    bitsPerPixel = bmp.bmBitsPixel
End Sub
Note that the last two arguments are optional, so you can ask for bitmap size only. Here is how you show this information:

GetBitmapInfo Picture1.Picture, width, height, colorPlanes, bitsPerPixel
Label1 = "Width = " & width & vbCrLf & "Height = " & height & vbCrLf & _
    "Color Planes = " & colorPlanes & vbCrLf & "Bits per Pixel = " & _
Francesco Balena
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date