Ik heb met LoadImage een bitmap ingelezen vanuit een file, dit lijkt goed te lukken en ik heb dan ook een handle als resultaat terug gehad. Als ik nou met GetObjectApi de informatie uitlees voor mijn bitmap dan krijg ik keurig de afmetingen en bpp te zien. Het probleem is dat de bmBits op 0 blijft staan. Oftewel ik heb geen pointer naar locatie van de bit values.
Nou heb ik een routine gevonden die een bitmap omzet naar een VB Picture. Als ik daar de handle aan geef die LoadImage terug gaf dan krijg ik keurig mijn plaatje te zien! Ik snap alleen niet waarom deze routine wel de bit values weet te vinden.
Kan iemand me verder helpen want ik wil zelf bij de bit values kunnen komen. Het uiteindelijke doel is namelijk om het plaatje te kunnen resizen met resampling. Ik heb BitBlt en StretchBlt maar dan gaat mijn bitmap er ontzettend lelijk uitzien als ik 'em gaan verkleinen. Ik heb al een stuk code voor het resizen maar een voorwaarde om dat te kunnen gebruiken is dat ik de bit values van de bitmap kan benaderen.
Met deze code lees ik het plaatje in:
En deze code had ik gevonden om een bitmap te converteren naar een VB picture:
Ik heb alle declaraties van types e.d. maar even weg gelaten, mocht iemand daar behoefte aan hebben dan kan ik die altijd alsnog posten.
Nou heb ik een routine gevonden die een bitmap omzet naar een VB Picture. Als ik daar de handle aan geef die LoadImage terug gaf dan krijg ik keurig mijn plaatje te zien! Ik snap alleen niet waarom deze routine wel de bit values weet te vinden.
Kan iemand me verder helpen want ik wil zelf bij de bit values kunnen komen. Het uiteindelijke doel is namelijk om het plaatje te kunnen resizen met resampling. Ik heb BitBlt en StretchBlt maar dan gaat mijn bitmap er ontzettend lelijk uitzien als ik 'em gaan verkleinen. Ik heb al een stuk code voor het resizen maar een voorwaarde om dat te kunnen gebruiken is dat ik de bit values van de bitmap kan benaderen.
Met deze code lees ik het plaatje in:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
| Private Sub ShowImage(ByVal ImageFile As String) Dim hBMP As Long Dim BMPHeader As BITMAP hBMP = LoadImage(App.hInstance, ImageFile, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE) Call GetObjectAPI(hBMP, Len(BMPHeader), BMPHeader) Set Me.Picture = BitmapToPicture(hBMP) Call DeleteObject(hBMP) End Sub |
En deze code had ik gevonden om een bitmap te converteren naar een VB picture:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| Public Function BitmapToPicture(ByVal hBMP As Long) As IPicture Dim oNewPic As Picture, tPicConv As PictDesc, IGuid As GUID If Not (hBMP = 0) Then ' Fill PictDesc structure with necessary parts: tPicConv.cbSizeofStruct = Len(tPicConv) tPicConv.picType = vbPicTypeBitmap tPicConv.hImage = hBMP ' Fill in IDispatch Interface ID IGuid.Data1 = &H20400 IGuid.Data4(0) = &HC0 IGuid.Data4(7) = &H46 ' Create a picture object: Call OleCreatePictureIndirect(tPicConv, IGuid, True, oNewPic) ' Return it: Set BitmapToPicture = oNewPic End If End Function |
Ik heb alle declaraties van types e.d. maar even weg gelaten, mocht iemand daar behoefte aan hebben dan kan ik die altijd alsnog posten.