i don't know if it is what you're looking for.
This example use a callback to repaint the image i've loaded with catchimage before creating a GDI+ bitmap.
Code: Select all
XIncludeFile "..\..\..\gdiplus.pbi"
EnableExplicit
#MainWindow = 0
#Image = 0
Global *token, *image, hBitmap.l
Procedure myCallback(window, message, wParam, lParam)
Protected dc.l, ps.PAINTSTRUCT, *Localgfx
Select message
Case #WM_PAINT
dc = BeginPaint_(window, @ps)
If dc
If GdipCreateFromHDC(dc, @*Localgfx) = #Ok
GdipDrawImageI(*Localgfx, *image, 50, 50)
GdipDeleteGraphics(*Localgfx)
EndIf
EndPaint_(window, @ps)
EndIf
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
hBitmap = CatchImage(#Image, ?Img)
If hBitmap And OpenWindow(#MainWindow, 0, 0, 340, 280, "GdiPlus 1.0 - GdipCreateBitmapFromHBITMAP", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
*token = Gdiplus_New()
If *token
If GdipCreateBitmapFromHBITMAP(hBitmap, #Null, @*image) = #Ok
SetWindowCallback(@myCallback(), #MainWindow)
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
GdipDisposeImage(*image)
EndIf
GdiplusShutdown(*token)
EndIf
EndIf
End
DataSection
Img :
Data.l $0E5E4D42, $00000000, $04360000, $00280000, $00320000, $00320000
Data.l $00010000, $00000008, $0A280000, $08780000, $08780000, $00000000
Data.l $00000000, $00000000, $00000000, $80000080, $80000000, $00800080
Data.l $00800000, $80800080, $80800000, $DCC00080, $CAF000C0, $3FAA00A6
Data.l $3FFF002A, $5F00002A, $5F55002A, $5FAA002A, $5FFF002A, $7F00002A
Data.l $7F55002A, $7FAA002A, $7FFF002A, $9F00002A, $9F55002A, $9FAA002A
Data.l $9FFF002A, $BF00002A, $BF55002A, $BFAA002A, $BFFF002A, $DF00002A
Data.l $DF55002A, $DFAA002A, $DFFF002A, $FF00002A, $FF55002A, $FFAA002A
Data.l $FFFF002A, $0000002A, $00550055, $00AA0055, $00FF0055, $1F000055
Data.l $1F550055, $1FAA0055, $1FFF0055, $3F000055, $3F550055, $3FAA0055
Data.l $3FFF0055, $5F000055, $5F550055, $5FAA0055, $5FFF0055, $7F000055
Data.l $7F550055, $7FAA0055, $7FFF0055, $9F000055, $9F550055, $9FAA0055
Data.l $9FFF0055, $BF000055, $BF550055, $BFAA0055, $BFFF0055, $DF000055
Data.l $DF550055, $DFAA0055, $DFFF0055, $FF000055, $FF550055, $FFAA0055
Data.l $FFFF0055, $00000055, $0055007F, $00AA007F, $00FF007F, $1F00007F
Data.l $1F55007F, $1FAA007F, $1FFF007F, $3F00007F, $3F55007F, $3FAA007F
Data.l $3FFF007F, $5F00007F, $5F55007F, $5FAA007F, $5FFF007F, $7F00007F
Data.l $7F55007F, $7FAA007F, $7FFF007F, $9F00007F, $9F55007F, $9FAA007F
Data.l $9FFF007F, $BF00007F, $BF55007F, $BFAA007F, $BFFF007F, $DF00007F
Data.l $DF55007F, $DFAA007F, $DFFF007F, $FF00007F, $FF55007F, $FFAA007F
Data.l $FFFF007F, $0000007F, $005500AA, $00AA00AA, $00FF00AA, $1F0000AA
Data.l $1F5500AA, $1FAA00AA, $1FFF00AA, $3F0000AA, $3F5500AA, $3FAA00AA
Data.l $3FFF00AA, $5F0000AA, $5F5500AA, $5FAA00AA, $5FFF00AA, $7F0000AA
Data.l $7F5500AA, $7FAA00AA, $7FFF00AA, $9F0000AA, $9F5500AA, $9FAA00AA
Data.l $9FFF00AA, $BF0000AA, $BF5500AA, $BFAA00AA, $BFFF00AA, $DF0000AA
Data.l $DF5500AA, $DFAA00AA, $DFFF00AA, $FF0000AA, $FF5500AA, $FFAA00AA
Data.l $FFFF00AA, $000000AA, $005500D4, $00AA00D4, $00FF00D4, $1F0000D4
Data.l $1F5500D4, $1FAA00D4, $1FFF00D4, $3F0000D4, $3F5500D4, $3FAA00D4
Data.l $3FFF00D4, $5F0000D4, $5F5500D4, $5FAA00D4, $5FFF00D4, $7F0000D4
Data.l $7F5500D4, $7FAA00D4, $7FFF00D4, $9F0000D4, $9F5500D4, $9FAA00D4
Data.l $9FFF00D4, $BF0000D4, $BF5500D4, $BFAA00D4, $BFFF00D4, $DF0000D4
Data.l $DF5500D4, $DFAA00D4, $DFFF00D4, $FF0000D4, $FF5500D4, $FFAA00D4
Data.l $FFFF00D4, $005500D4, $00AA00FF, $1F0000FF, $1F5500FF, $1FAA00FF
Data.l $1FFF00FF, $3F0000FF, $3F5500FF, $3FAA00FF, $3FFF00FF, $5F0000FF
Data.l $5F5500FF, $5FAA00FF, $5FFF00FF, $7F0000FF, $7F5500FF, $7FAA00FF
Data.l $7FFF00FF, $9F0000FF, $9F5500FF, $9FAA00FF, $9FFF00FF, $BF0000FF
Data.l $BF5500FF, $BFAA00FF, $BFFF00FF, $DF0000FF, $DF5500FF, $DFAA00FF
Data.l $DFFF00FF, $FF5500FF, $FFAA00FF, $CCFF00FF, $CCFF00CC, $FFFF00FF
Data.l $FFFF0033, $FFFF0066, $FFFF0099, $7F0000CC, $7F550000, $7FAA0000
Data.l $7FFF0000, $9F000000, $9F550000, $9FAA0000, $9FFF0000, $BF000000
Data.l $BF550000, $BFAA0000, $BFFF0000, $DF000000, $DF550000, $DFAA0000
Data.l $DFFF0000, $FF550000, $FFAA0000, $00000000, $0055002A, $00AA002A
Data.l $00FF002A, $1F00002A, $1F55002A, $1FAA002A, $1FFF002A, $3F00002A
Data.l $3F55002A, $FBF0002A, $A0A400FF, $808000A0, $00000080, $FF0000FF
Data.l $FF000000, $00FF00FF, $00FF0000, $FFFF00FF, $FFFF0000, $FFFF00FF
Data.l $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF
Data.l $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF
Data.l $FFFF0000, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF
Data.l $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF
Data.l $FFFFFFFF, $FFFF0000, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF
Data.l $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $00FFFFFF, $FFFFFFFF, $FFFFFFFF
Data.l $FFFFFFFF, $FFFFFFFF, $FFFF0000, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF
Data.l $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $00FFFFFF, $FFFFFFFF
Data.l $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFF0000, $FFFFFFFF, $FFFFFFFF
Data.l $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $0000FFFF
Data.l $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFF0000, $FFFFFFFF
Data.l $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF
Data.l $0000FFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFF0000
Data.l $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF
Data.l $FFFFFFFF, $000000FF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF
Data.l $FFFF0000, $FFFFFFFF, $FFFFFFFF, $0000FFFF, $00000000, $00000000
Data.l $00000000, $FFFFFFFF, $00FA0000, $00000000, $FF000000, $FFFFFFFF
Data.l $FFFFFFFF, $FFFF0000, $FFFFFFFF, $FFFFFFFF, $00000000, $00000000
Data.l $00000000, $00000000, $FFFFFFFF, $00FA0000, $00000000, $00000000
Data.l $FFFFFF00, $FFFFFFFF, $FFFF0000, $FFFFFFFF, $FFFFFFFF, $02020000
Data.l $02020202, $02020202, $00000202, $00FFFFFF, $FAFAFA00, $FAFAFAFA
Data.l $00FAFAFA, $FFFFFF00, $FFFFFFFF, $FFFF0000, $FFFFFFFF, $00FFFFFF
Data.l $02020200, $02020202, $02020202, $00000202, $00FFFFFF, $FAFAFA00
Data.l $FAFAFAFA, $FAFAFAFA, $FFFF0000, $FFFFFFFF, $FFFF0000, $FFFFFFFF
Data.l $0000FFFF, $02020200, $02020202, $02020202, $00000202, $0000FFFF
Data.l $FAFAFAFA, $FAFAFAFA, $FAFAFAFA, $FFFF0000, $FFFFFFFF, $FFFF0000
Data.l $FFFFFFFF, $0000FFFF, $02020202, $02020202, $02020202, $00000202
Data.l $0000FFFF, $FAFAFAFA, $FAFAFAFA, $FAFAFAFA, $FF0000FA, $FFFFFFFF
Data.l $FFFF0000, $FFFFFFFF, $000000FF, $02020202, $02020202, $02020202
Data.l $00000202, $0000FFFF, $FAFAFAFA, $FAFAFAFA, $FAFAFAFA, $FF0000FA
Data.l $FFFFFFFF, $FFFF0000, $FFFFFFFF, $000000FF, $02020200, $02020202
Data.l $02020202, $00000202, $0000FFFF, $FAFAFAFA, $FAFAFAFA, $FAFAFAFA
Data.l $0000FAFA, $FFFFFFFF, $FFFF0000, $FFFFFFFF, $FAFA0000, $02020000
Data.l $02020202, $02020202, $00000202, $00FFFFFF, $FAFAFA00, $FAFAFAFA
Data.l $FAFAFAFA, $00FAFAFA, $FFFFFF00, $FFFF0000, $FFFFFFFF, $FAFA0000
Data.l $02020000, $02020202, $02020202, $00000202, $FFFFFFFF, $FAFA0000
Data.l $FAFAFAFA, $FAFAFAFA, $00FAFAFA, $FFFFFF00, $FFFF0000, $00FFFFFF
Data.l $FAFAFA00, $000000FA, $00000000, $00000000, $00000000, $FFFFFFFF
Data.l $00FA0000, $00000000, $00000000, $00000000, $FFFF0000, $FFFF0000
Data.l $00FFFFFF, $FAFAFAFA, $FF0000FA, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF
Data.l $FFFFFFFF, $000000FF, $FFFFFFFF, $0000FFFF, $00020202, $FFFF0000
Data.l $FFFF0000, $0000FFFF, $FAFAFAFA, $0000FAFA, $FFFFFFFF, $FFFFFFFF
Data.l $FFFFFFFF, $FFFFFFFF, $000000FF, $FFFFFFFF, $020000FF, $02020202
Data.l $FF000002, $FFFF0000, $FA0000FF, $FAFAFAFA, $00FAFAFA, $FFFFFF00
Data.l $FF00FFFF, $FFFFFFFF, $FFFFFFFF, $0000FFFF, $FFFFFFFF, $02020000
Data.l $02020202, $00000202, $FFFF0000, $FA0000FF, $FAFAFAFA, $00FAFAFA
Data.l $FFFFFF00, $FFFF0000, $FFFFFFFF, $FFFFFFFF, $00FFFFFF, $FFFFFFFF
Data.l $02020000, $02020202, $00000202, $FFFF0000, $FA0000FF, $FAFAFAFA
Data.l $FAFAFAFA, $00000000, $FFFF0000, $FFFFFFFF, $FFFFFFFF, $00FFFFFF
Data.l $00FFFFFF, $02020200, $02020202, $00000202, $FFFF0000, $FA0000FF
Data.l $FAFAFAFA, $FAFAFAFA, $00000000, $FFFFFF00, $FFFFFFFF, $FFFFFFFF
Data.l $FFFFFFFF, $00FFFFFF, $02020200, $02020202, $00000202, $FFFF0000
Data.l $FA0000FF, $FAFAFAFA, $FAFAFAFA, $000000FA, $FFFFFF00, $FFFFFFFF
Data.l $FFFFFFFF, $FFFFFFFF, $0000FFFF, $02020202, $02020202, $00000202
Data.l $FFFF0000, $0000FFFF, $FAFAFAFA, $FAFAFAFA, $0000FAFA, $FFFFFFFF
Data.l $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $000000FF, $02020202, $02020202
Data.l $FF000002, $FFFF0000, $00FFFFFF, $FAFAFAFA, $FAFAFAFA, $000000FA
Data.l $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $020000FF, $02020202
Data.l $02020202, $FFFF0000, $FFFF0000, $00FFFFFF, $FAFAFA00, $FAFAFAFA
Data.l $FF0000FA, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $02020000
Data.l $02020202, $02020202, $FFFF0000, $FFFF0000, $FFFFFFFF, $FAFA0000
Data.l $FAFAFAFA, $FFFF0000, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF
Data.l $02020000, $02020202, $00020202, $FFFFFF00, $FFFF0000, $00FFFFFF
Data.l $FAFA0000, $FAFAFAFA, $FFFF0000, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF
Data.l $00FFFFFF, $02000000, $02020202, $00020202, $FFFFFF00, $FFFF0000
Data.l $000000FF, $00000000, $00000000, $FFFFFF00, $FFFFFFFF, $FFFFFFFF
Data.l $FFFFFFFF, $FFFFFFFF, $000000FF, $02020200, $00000202, $FFFFFFFF
Data.l $00FF0000, $00000000, $00000000, $00000000, $FFFFFFFF, $FF000000
Data.l $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $00FFFFFF, $02020000, $FF000002
Data.l $FFFFFFFF, $FFFF0000, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $0000FFFF
Data.l $FF000000, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $000000FF
Data.l $FF000002, $FFFFFFFF, $FFFF0000, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF
Data.l $000000FF, $00000202, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF
Data.l $0000FFFF, $FFFF0000, $FFFFFFFF, $FFFF0000, $FFFFFFFF, $FFFFFFFF
Data.l $00FFFFFF, $02020000, $00000202, $00FFFF00, $00000000, $00000000
Data.l $00000000, $FFFFFFFF, $FFFF0000, $FFFFFFFF, $FFFF0000, $FFFFFFFF
Data.l $FFFFFFFF, $000000FF, $02020202, $00020202, $FFFFFF00, $000000FF
Data.l $FAFAFAFA, $00FAFAFA, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFF0000
Data.l $FFFFFFFF, $FFFFFFFF, $02000000, $02020202, $02020202, $FFFF0000
Data.l $0000FFFF, $FAFAFA00, $00FAFAFA, $FFFFFF00, $FFFFFFFF, $FFFFFFFF
Data.l $FFFF0000, $FFFFFFFF, $FFFFFFFF, $020000FF, $02020202, $02020202
Data.l $FFFF0000, $0000FFFF, $FAFAFAFA, $FAFAFAFA, $FFFF0000, $FFFFFFFF
Data.l $FFFFFFFF, $FFFF0000, $FFFFFFFF, $FFFFFFFF, $020000FF, $02020202
Data.l $02020202, $FF000002, $0000FFFF, $FAFAFAFA, $FAFAFAFA, $FFFF0000
Data.l $FFFFFFFF, $FFFFFFFF, $FFFF0000, $FFFFFFFF, $FFFFFFFF, $0000FFFF
Data.l $02020202, $02020202, $FF000002, $0000FFFF, $FAFAFAFA, $FAFAFAFA
Data.l $FF0000FA, $FFFFFFFF, $FFFFFFFF, $FFFF0000, $FFFFFFFF, $FFFFFFFF
Data.l $00FFFFFF, $02020200, $02020202, $00000202, $FA0000FF, $FAFAFAFA
Data.l $FAFAFAFA, $0000FA00, $FFFFFFFF, $FFFFFFFF, $FFFF0000, $FFFFFFFF
Data.l $FFFFFFFF, $00FFFFFF, $02020200, $02020202, $00020202, $FAFA0000
Data.l $FAFAFAFA, $FAFAFAFA, $00000000, $FFFFFFFF, $FFFFFFFF, $FFFF0000
Data.l $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $02020000, $02020202, $00020202
Data.l $FAFA0000, $FAFAFAFA, $00FAFAFA, $00000000, $FFFFFF00, $FFFFFFFF
Data.l $FFFF0000, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $02020000, $02020202
Data.l $00020202, $FAFAFA00, $FAFAFAFA, $00FAFAFA, $0000FFFF, $FFFFFF00
Data.l $FFFFFFFF, $FFFF0000, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $020000FF
Data.l $02020202, $00020202, $FAFAFA00, $FAFAFAFA, $0000FAFA, $FFFFFFFF
Data.l $FFFF0000, $FFFFFFFF, $FFFF0000, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF
Data.l $000000FF, $02020202, $00000202, $FAFAFAFA, $FAFAFAFA, $FF0000FA
Data.l $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFF0000, $FFFFFFFF, $FFFFFFFF
Data.l $FFFFFFFF, $0000FFFF, $02020202, $FA000002, $FAFAFAFA, $FAFAFAFA
Data.l $FF000000, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFF0000, $FFFFFFFF
Data.l $FFFFFFFF, $FFFFFFFF, $00FFFFFF, $00000000, $00000000, $00000000
Data.l $00000000, $FFFF0000, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFF0000
Data.l $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $000000FF, $00000000
Data.l $00000000, $00000000, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF
Data.l $FFFF0000, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF
Data.l $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF
Data.b - 1, -1, -1, -1, 0, 0
EndDataSection