2008-11-10 5 views

Répondre

4
Private Type BITMAP 
    bmType As Long 
    bmWidth As Long 
    bmHeight As Long 
    bmWidthBytes As Long 
    bmPlanes As Integer 
    bmBitsPixel As Integer 
    bmBits As Long 
End Type 

Private Declare Function GetObject Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long 
Private Declare Function GetBitmapBits Lib "gdi32" (ByVal hBitmap As Long, ByVal dwCount As Long, lpBits As Any) As Long 

Private Sub GetPictureBytes() 
    Dim PicBits() As Byte, PicInfo As BITMAP 

    GetObject Picture1.Picture, Len(PicInfo), PicInfo 

    ReDim PicBits((PicInfo.bmWidth * PicInfo.bmHeight * 3) - 1) As Byte 

    GetBitmapBits Picture1.Picture, UBound(PicBits), PicBits(0) 
End Sub 
+1

qu'en est-il de faire l'inverse de cela, et pouvez-vous également afficher le code du sac de la propriété? – Smith

+0

J'ai demandé cela ici http://stackoverflow.com/questions/26442660/loading-a-picturebox-image-from-a-byte-array-in-vb6 –

+0

Cela va récupérer seulement les bits bitmap, pas les informations bitmap et en-tête –

2

Cela fait longtemps que je n'ai pas travaillé avec VB6 mais pour autant que je me souvienne, vous pouvez juste sérialiser l'image dans un PropertyBag et obtenir le contenu sous la forme d'un tableau d'octets.

La seule alternative que je connaisse nécessite une utilisation intensive de WinAPI pour accomplir la même chose.

+2

pouvez-vous poster un exemple de code de ce – Smith