BMP Tutor - Convert bmp$ --> Colors(x,y)

Category: BMP Tutor Series (API)

Date: 03-28-2012

Return to Index


 
'This code reads the color data from a bitmap file into
'a bitstring, compatible for use with PowerBASIC graphic targets.
 
'Primary Code:
 
 
'Compilable Example:
#Compiler PBWin 9, PBWin 10
#Compile EXE
#Dim All
#Include "Win32API.inc"
%IDC_Graphic = 500
Global hDlg as DWord
 
Function PBMain() As Long
   Dialog New Pixels, 0, "Test Code",300,300,200,200, %WS_OverlappedWindow To hDlg
   Control Add Button, hDlg, 100,"Push", 50,10,100,20
   Control Add Graphic, hDlg, %IDC_Graphic,"",50,40,100,100, %WS_Border
   Graphic Attach hDlg, %IDC_Graphic
   Dialog Show Modal hDlg Call DlgProc
End Function
 
CallBack Function DlgProc() As Long
   If CB.Msg = %WM_Command AND CB.Ctl = 100 AND CB.Ctlmsg = %BN_Clicked Then
      Local bmp$
      bmp$ = GetBitString("cowgirl.bmp")
      Graphic Set Bits bmp$
   End If
End Function
 
Function GetBitString(fSource As StringAs String
   Local bmpheader As BITMAPFILEHEADER, bmpinfo As BITMAPINFOHEADER, padding, i as Long
   Local w,h as Long, bmp$
   'Open the file
   Open fSource For Binary as #1
   Get #1, , bmpheader    'get BITMAPFILEHEADER
   Get #1, , bmpinfo      'get BITMAPINFOHEADER
 
   'Create single-dimension buffer for bitmap color data (BGR data + padding)
   w = bmpinfo.biWidth
   h = bmpinfo.biHeight
   padding  = (4 - (w*3) Mod 4) Mod 4
   Dim Buffer((w*3+padding)*h - 1) As Byte   'pixel color array data (0-based array)
 
   'read the buffer - padded, upside-down, BGR image color data
   Get #1, bmpheader.bfOffBits+1, Buffer()   'read image data into structure     start,length,variable
   Close #1
 
   'Example of modifying the image color data within the Buffer() array
   For i = 0 to UBound(Buffer)    'loop through all Bytes
   Next i
 
   Function = bmp$
End Function
 
'gbs_00523
'Date: 03-10-2012


created by gbSnippets
http://www.garybeene.com/sw/gbsnippets.htm