Re: Relationship of LoadPicture() and GDIPlus Load Methods
- From: "Fatih Argun" <aaa@xxxxxxx>
- Date: Sat, 21 Jan 2006 08:57:23 +0200
'FORM CODE
'----------------------------------------------------------
Option Explicit
Private Sub Form_Load()
StartUpGDIPlus GdiPlusVersion
End Sub
Private Sub Form_Unload(Cancel As Integer)
ShutdownGDIPlus
End Sub
Private Sub Command1_Click()
Me.Picture = GetPictureFromFile("C:\test.jpg")
End Sub
'MODULE CODE
'----------------------------------------------------------
Option Explicit
Private Type PictDesc
cbSizeOfStruct As Long
picType As Long
hgdiObj As Long
hPalOrXYExt As Long
End Type
Private Type GUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(0 To 7) As Byte
End Type
Public Const GdiPlusVersion As Long = 1
Private Type GDIPlusStartupInput
GdiPlusVersion As Long
DebugEventCallback As Long
SuppressBackgroundThread As Long
SuppressExternalCodecs As Long
End Type
Private Declare Function CLSIDFromString Lib "ole32.dll" (ByVal lpsz As
Long, ByRef pclsid As GUID) As Long
Private Const SIPICTURE As String = "{7BF80980-BF32-101A-8BBB-00AA00300CAB}"
Private Declare Function GdipCreateBitmapFromFile Lib "gdiplus" (ByVal
FileName As Long, ByRef bitmap As Long) As Long
Private Declare Function GdipCreateHBITMAPFromBitmap Lib "gdiplus" (ByVal
bitmap As Long, ByRef hbmReturn As Long, ByVal background As Long) As Long
Private Declare Function GdipDisposeImage Lib "gdiplus" (ByVal Image As
Long) As Long
Private Declare Function GdiplusStartup Lib "gdiplus" (ByRef token As Long,
ByRef lpInput As GDIPlusStartupInput, Optional ByRef lpOutput As Any) As
Long
Private Declare Function GdiplusShutdown Lib "gdiplus" (ByVal token As Long)
As Long
Private Declare Sub OleCreatePictureIndirect Lib "oleaut32.dll" (lpPictDesc
As PictDesc, riid As GUID, ByVal fOwn As Boolean, lplpvObj As Object)
Private GdipInitialized As Boolean
Private GdipToken As Long
Public Function GetPictureFromFile(ByVal FileName As String) As StdPicture
Dim lBitmap As Long
Dim hBitmap As Long
Dim tPictDesc As PictDesc
Dim PictureGUID As GUID
If GdipCreateBitmapFromFile(StrPtr(FileName), lBitmap) = 0& Then
'=============================================
If GdipCreateHBITMAPFromBitmap(lBitmap, hBitmap, 0&) = 0& Then
tPictDesc.cbSizeOfStruct = Len(tPictDesc)
tPictDesc.picType = vbPicTypeBitmap
tPictDesc.hgdiObj = hBitmap
tPictDesc.hPalOrXYExt = 0
CLSIDFromString StrPtr(SIPICTURE), PictureGUID
OleCreatePictureIndirect tPictDesc, PictureGUID, True,
GetPictureFromFile
End If
'==============================================
GdipDisposeImage lBitmap
End If
End Function
Public Function StartUpGDIPlus(ByVal GdipVersion As Long) As Long
Dim GdipStartupInput As GDIPlusStartupInput
GdipStartupInput.GdiPlusVersion = GdipVersion
StartUpGDIPlus = GdiplusStartup(GdipToken, GdipStartupInput, ByVal 0&)
GdipInitialized = (StartUpGDIPlus = 0)
End Function
Public Function ShutdownGDIPlus() As Long
If GdipInitialized Then
ShutdownGDIPlus = GdiplusShutdown(GdipToken)
End If
End Function
.
- Follow-Ups:
- Re: Relationship of LoadPicture() and GDIPlus Load Methods
- From: cuttysark55
- Re: Relationship of LoadPicture() and GDIPlus Load Methods
- Prev by Date: Re: Picture Box or Form
- Next by Date: Re: Convert from JPG or 24-bit BMP to 256-color BMP using VB
- Previous by thread: Picture Box or Form
- Next by thread: Re: Relationship of LoadPicture() and GDIPlus Load Methods
- Index(es):
Relevant Pages
|