GDI Plus version 1.1 wrapper for PureBasic 4.02
GDI Plus version 1.1 wrapper for PureBasic 4.02
Features:
609 functions from the latest GdiPlus.lib (available in the Vista SDK)
Includes 40 helper procedures For common graphics objects (16 are image manipulation procedures)
Includes 32 wrapped methods from GdiPlusGraphics.h
Includes all constants And structures For GDI Plus version 1.1
Includes image file conversions from one type To another
Includes .jpeg compression
Includes .tif color bit depth conversion
Includes several example And basic framework .pb files of basic usage, nothing fancy, real basic.
Operating Systems Supported: WindowsXP (With gdi plus version 1.1 installed), Windows Vista
NOTE: might also work With Windows 2000 And Windows 2003 With gdi plus version 1.1 installed, but Not tested)
Files included:
gdiplus_11.pbi (main include file), gdiplus_Constants.pbi, gdiplus_Structures.pbi
gdiplus_apimacros.pbi, gdiplus_GUID.pbi, gdiplus.lib (most current from the Vista SDK included in .zip)
gdiplus_11_not_implement_functions.pbi
Note: For gdiplus_11_not_implement_functions.pbi:
Read the Import "gdiplus.lib" comments at the bottom of the section.
These are Not implemented in system gdiplus.dll but are on a per application basis
If the app supplies a gdiplus.dll With the functions in it.
Requires:
The Macros Framework For Creating COM Objects by freak located at
http://www.purebasic.fr/english/viewtopic.php?t=22132
If you do Not have the Macros Framework you will need To convert the GUID's to datasections yourself.
Instructions For use:
Unzip all files into a directory of your choice. Include gdiplus_11.pbi in your project.
Help And Support:
There is no help file supplied. The example files pretty much tells you the basics. The gdiplus_11.pbi
file has comments in certain areas. The basic GDI Plus functions are documented at:
http://msdn.microsoft.com/library/Defau ... erence.asp
And at a ton of other places on the net.
Credit And Acknowledgements:
Listed at the top of the gdiplus_11.pbi file
You can download the latest .zip here:
http://home.comcast.net/~sfsxoi/gdiplus11_v3a.zip
(the gdiplus11.zip is approximately 730 Kb As it includes some images used by the examples)
(Please provide feedback for changes, correction, or improvement.)
Thank You
609 functions from the latest GdiPlus.lib (available in the Vista SDK)
Includes 40 helper procedures For common graphics objects (16 are image manipulation procedures)
Includes 32 wrapped methods from GdiPlusGraphics.h
Includes all constants And structures For GDI Plus version 1.1
Includes image file conversions from one type To another
Includes .jpeg compression
Includes .tif color bit depth conversion
Includes several example And basic framework .pb files of basic usage, nothing fancy, real basic.
Operating Systems Supported: WindowsXP (With gdi plus version 1.1 installed), Windows Vista
NOTE: might also work With Windows 2000 And Windows 2003 With gdi plus version 1.1 installed, but Not tested)
Files included:
gdiplus_11.pbi (main include file), gdiplus_Constants.pbi, gdiplus_Structures.pbi
gdiplus_apimacros.pbi, gdiplus_GUID.pbi, gdiplus.lib (most current from the Vista SDK included in .zip)
gdiplus_11_not_implement_functions.pbi
Note: For gdiplus_11_not_implement_functions.pbi:
Read the Import "gdiplus.lib" comments at the bottom of the section.
These are Not implemented in system gdiplus.dll but are on a per application basis
If the app supplies a gdiplus.dll With the functions in it.
Requires:
The Macros Framework For Creating COM Objects by freak located at
http://www.purebasic.fr/english/viewtopic.php?t=22132
If you do Not have the Macros Framework you will need To convert the GUID's to datasections yourself.
Instructions For use:
Unzip all files into a directory of your choice. Include gdiplus_11.pbi in your project.
Help And Support:
There is no help file supplied. The example files pretty much tells you the basics. The gdiplus_11.pbi
file has comments in certain areas. The basic GDI Plus functions are documented at:
http://msdn.microsoft.com/library/Defau ... erence.asp
And at a ton of other places on the net.
Credit And Acknowledgements:
Listed at the top of the gdiplus_11.pbi file
You can download the latest .zip here:
http://home.comcast.net/~sfsxoi/gdiplus11_v3a.zip
(the gdiplus11.zip is approximately 730 Kb As it includes some images used by the examples)
(Please provide feedback for changes, correction, or improvement.)
Thank You
Last edited by SFSxOI on Thu Apr 19, 2007 9:22 pm, edited 4 times in total.
New version at link in original post above, zip file gdiplus11_v3a.zip. About 90% of the header file wrapped methods included now. A few minor corrections made and a little refinement in the helper functions, a few adjustments in the organization or comments (will eventually remove most of the comments).
Hi mike,
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.
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
A+
Denis
Denis
- netmaestro
- PureBasic Bullfrog
- Posts: 8451
- Joined: Wed Jul 06, 2005 5:42 am
- Location: Fort Nelson, BC, Canada
Here's how to catch the gdiplus image from memory directly:
It's assuming gdiplusstartup has already been called and you'd replace the CallFunction line with the wrapped version to use it with a wrapper, but that's how to do it. One advantage is you don't need decoders if you do it this way.
Code: Select all
; gdiplus CatchImage
Length = ?pic_end-?pic_start
g1 = GlobalAlloc_(#GHND, Length)
*buffer = GlobalLock_(g1)
CopyMemory(?pic_start, *buffer, Length)
If CreateStreamOnHGlobal_(*buffer, 1, @stream1.ISTREAM) = #S_OK
CallFunction(gdiplus, "GdipCreateBitmapFromStream", stream1 , @*image)
Else
MessageRequester("Error","Problem creating images", #MB_ICONERROR)
End
EndIf
BERESHEIT
netmaestro
I think that you are right about no decoders needed by this way
. It's due to GDI+ function. I did not pay attention before.
I've changed a bit an example from Erix14 (include in the french doc i'm writing on GDI+)
Image in datasection is a png one. No repaint event. Just as it.
I think that you are right about no decoders needed by this way

I've changed a bit an example from Erix14 (include in the french doc i'm writing on GDI+)
Image in datasection is a png one. No repaint event. Just as it.
Code: Select all
XIncludeFile "..\..\..\gdiplus.pbi"
EnableExplicit
Enumeration
#MainWindow
EndEnumeration
Define .l
Global *token = Gdiplus_New()
Global *gfx, *image, imageSize.l, hGlobal.l, *GlobalBuffer.l, iImageStream.l, *Buffer.l
Procedure IUnknown_Release(*obj.IUnknown)
ProcedureReturn *obj\Release()
EndProcedure
If OpenWindow(#MainWindow, 0, 0, 640, 480, "GdiPlus 1.0 - GdipCreateBitmapFromStream", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
GdipCreateFromHWND(WindowID(#MainWindow), @*gfx)
imageSize = ?fin - ?debut
*Buffer = ?debut
hGlobal = GlobalAlloc_(#GMEM_MOVEABLE | #GMEM_NODISCARD, imageSize)
If hGlobal
*GlobalBuffer = GlobalLock_(hGlobal)
If *GlobalBuffer
CopyMemory_(*GlobalBuffer, *Buffer, imageSize)
If CreateStreamOnHGlobal_(hGlobal, #False, @iImageStream) = 0
; Récupération de l'image PNG inclus dans DataSection.
If GdipCreateBitmapFromStream(iImageStream, @*image) = #Ok
GdipDrawImageI(*gfx, *image, 10, 10)
EndIf
GdipDisposeImage(*image)
IUnknown_Release(iImageStream)
EndIf
GlobalUnlock_(*GlobalBuffer)
EndIf
GlobalFree_(hGlobal)
EndIf
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver
EndIf
GdipDeleteGraphics(*gfx)
GdiplusShutdown(*token)
DataSection
Debut :
Data.l $474E5089, $0A1A0A0D, $0D000000, $52444849, $32000000, $32000000
Data.l $00000308, $78E12900, $00000083, $4D497407, $04D70745, $190F1115
Data.l $12FABFAF, $09000000, $73594870, $79080000, $79080000, $97490501
Data.l $000000CD, $4D416704, $B1000041, $61FC0B8F, $00000005, $544C500C
Data.l $FFFFFF45, $00000000, $800000FF, $5D6B0900, $0000008A, $414449FC
Data.l $BDDA7854, $C216EB94, $49830830, $ACEFFEF7, $1A056DCE, $C8ECF32E
Data.l $819FAB3F, $91E454D0, $40DBAD82, $4FB60203, $8AACE301, $A65881C1
Data.l $8098C223, $0646849C, $E44AF976, $5071988D, $A064188B, $665A2227
Data.l $3FD92674, $B6D9AE57, $AB6BD20C, $28208083, $47193996, $07FD648C
Data.l $5CBA3BB4, $9C1E78CC, $4917CB22, $FF310177, $06003489, $4D2AF118
Data.l $732215C0, $E809BA18, $78F3E840, $0CBACB01, $846CC811, $64CE83C9
Data.l $05A2326C, $D2CCA66B, $6C4F9ADA, $E43C81C3, $04163A90, $C59ABF11
Data.l $189E9862, $CDEEF922, $64E5D334, $A80E50F5, $E432BF39, $E9D807BD
Data.l $89F768C5, $008FBE99, $5D6D8471, $490BF15F, $4304F109, $213F3DBC
Data.l $49EC6355, $8BF1F2D8, $E8904E2B, $29574B71, $910E4152, $EDF9DD6E
Data.l $C881FE64, $EA27907F, $08A83505, $FDA4DE17, $00000003, $4E454900
Data.b 68, -82, 66, 96, -126
Fin :
EndDataSection
A+
Denis
Denis
-
- Addict
- Posts: 1073
- Joined: Fri Apr 25, 2003 11:13 pm
- Location: Netherlands
- Contact:
-
- Addict
- Posts: 1073
- Joined: Fri Apr 25, 2003 11:13 pm
- Location: Netherlands
- Contact: