C'est quoi exactement un HBITMAP ?

rapido6 Messages postés 28 Date d'inscription dimanche 1 janvier 2006 Statut Membre Dernière intervention 20 août 2015 - 6 août 2009 à 18:29
rapido6 Messages postés 28 Date d'inscription dimanche 1 janvier 2006 Statut Membre Dernière intervention 20 août 2015 - 28 août 2009 à 16:15
Bonjour a tous,
J'utilise un OCX qui me donne un HBITMAP, mais je n'arrive pas a m'en servir ?
C'est une image bitmap en mémoire?
Peux t on faire un getpixel dessus ?

Merci de votre aide...

Steph.

13 réponses

cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
6 août 2009 à 18:35
Salut
Le 'h' précéde en général les variables qui représentent le Handle.
Dans ton cas, il s'agit d'une variable de type Long (VB6)
Donc oui, une image en mémoire, ou celle de la Picture d'une PictureBox.Picture.handle ou d'une Image.Picture.Handle

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
rapido6 Messages postés 28 Date d'inscription dimanche 1 janvier 2006 Statut Membre Dernière intervention 20 août 2015
6 août 2009 à 18:45
ok, merci deja pour l'info, mais
comment par exemple connaitre la couleur du pixel qui a pour coordonnées x=10 et y=20 par exemple ? avec ce type de variable ???

Merci.

Steph.
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
6 août 2009 à 23:01
Bonjour,

D'instinct :
- création d'une nouvelle StdPicture dans laquelle tu envoie ton hbitmap
- travail sur la stdpicture

genre : (avec utilisation de la fonction SelectObject de la librairie GDI32 de l'Api de Windows)

toto = SelectObject(hDC, hBitmap) ( ou toto est un long)

Dim mastd as stdpicture


mastd = IconToPicture(toto)

et tu travailles averc mastd (n'oublie pas de détruire ensuite toto à l'aide de la fonction DeleteObject de GDI32
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
6 août 2009 à 23:03
Heu...
Utilise Set, bien sûr (Set mastd = .....)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rapido6 Messages postés 28 Date d'inscription dimanche 1 janvier 2006 Statut Membre Dernière intervention 20 août 2015
7 août 2009 à 07:41
Ok merci, je vais essayer ca au plus vite, je vous tiens au courant...

Steph.
0
rapido6 Messages postés 28 Date d'inscription dimanche 1 janvier 2006 Statut Membre Dernière intervention 20 août 2015
7 août 2009 à 09:25
Bon ca bloque !
au niveau de mastd = IconToPicture(toto)
j'ai un message d'erreur comme quoi j'utilise mal la propriete !

voici une partie de mon code
Private Type PICTDESC
  cbSize As Long
  pictType As Long
  hIcon As Long
  hPal As Long
End Type
    
Private Declare Function OleCreatePictureIndirect Lib "olepro32.dll" _
  (lpPictDesc As PICTDESC, riid As Any, ByVal fOwn As Long, _
  ipic As IPicture) As Long


Function IconToPicture(ByVal hIcon As Long) As Picture
  Dim pic As PICTDESC
  Dim guid(0 To 3) As Long
  
  ' initialize the PictDesc structure
  pic.cbSize = Len(pic)
  pic.pictType = vbPicTypeIcon
  pic.hIcon = hIcon
  ' this is the IPicture GUID {7BF80980-BF32-101A-8BBB-00AA00300CAB}
  ' we use an array of Long to initialize it faster
  guid(0) = &H7BF80980
  guid(1) = &H101ABF32
  guid(2) = &HAA00BB8B
  guid(3) = &HAB0C3000
  ' create the picture,
  ' return an object reference right into the function result
  OleCreatePictureIndirect pic, guid(0), True, IconToPicture
End Function


toto = SelectObject(hdc, VideoCap1.SnapShot2HBITMAP)
Dim mastd As StdPicture
mastd = IconToPicture(toto)
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
7 août 2009 à 10:01
Relis-moi...
Je t'ai dit d'utiliser set ...
0
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
7 août 2009 à 10:05
Re
Comme te l'a dit jmf0, comme il s'agit de l'attribution d'un objet, il faut utiliser "Set" devant "mastd"
0
rapido6 Messages postés 28 Date d'inscription dimanche 1 janvier 2006 Statut Membre Dernière intervention 20 août 2015
7 août 2009 à 11:17
he ouai, j'ai pas fais gaff !! je vais reessayer cet apres midi...

Merci...

Steph.
0
rapido6 Messages postés 28 Date d'inscription dimanche 1 janvier 2006 Statut Membre Dernière intervention 20 août 2015
7 août 2009 à 14:10
Je crois que je vais laisser tomber car j'ai maintenant une erreur du style que seuls les commentaires peuvent apparaitre apres les fonctions subs, etc ...
qu'en pensez-vous de cette erreur ?

Steph...
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
7 août 2009 à 15:15
ben...
cela veut dire que tu as écrit des choses dans n'importe quel ordre, pardi, et non en respectant les règles DE BASE de vb ! (et la connaissance des bases est essentielle !)
On ne peut en général pas se mettre au volanbt d'une Ferrari sans au moins avoir appris à conduire une voiture de ville ...
0
rapido6 Messages postés 28 Date d'inscription dimanche 1 janvier 2006 Statut Membre Dernière intervention 20 août 2015
7 août 2009 à 17:06
Ok, je vais revoir ca a tete reposée
Merci beaucoup pour l'aide !
De tout facon si ca fonctionne je vous le ferez savoir, c'est la moindre des choses.

J'espère a tres bientot...

Steph.
0
rapido6 Messages postés 28 Date d'inscription dimanche 1 janvier 2006 Statut Membre Dernière intervention 20 août 2015
28 août 2009 à 16:15
Je reviens a la charge
Bon, je n'ai plus d'erreur mais par contre la variable c m'affiche -1
donc rien !
A mon avis getpixel n'est pas la bonne solution !!!!

Steph.



    Dim toto As Long
    toto = SelectObject(hdc, VideoCap1.SnapShot2HBITMAP)
    Dim mastd As StdPicture
Set mastd = IconToPicture(toto)
Dim c As Long
   c = GetPixel(toto, 100, 100)
    Label5.Caption = c
0