Problème avec la fonction getPixel dans une boucle For

cs_Battant Messages postés 11 Date d'inscription lundi 21 avril 2003 Statut Membre Dernière intervention 19 novembre 2003 - 12 mai 2003 à 22:12
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 13 mai 2003 à 17:06
Bonjour à tous,

Je suis en train de créer un programme d'annalyse d'image en utlisant la fonction getpixel progrmmée par un des membre de VBfrance.

Voilà mon problème.

J'essaie d'utiliser cette fonction dans une boule FOR mais apprès un environ 512 séquence une erreur de calcul se produit et la variable color contiont -1 (valeur non autorisée)

Est-ce que quelqu'un aurait une idée pour résoudre mon problème ?

Je vous serait très reconnaissant de bien vouloir apporter une réponse à ce mail assez vite car j'ai besoin que ma boucle fonctionne correctement pour pouvoir continuer mon prgramme.

A Bientôt

Battant

P.S. Je suis également intéressé par la fonction setpixel. Ext.ce que quelqu'un pourrait m'indiqué où la télécharger ?

Merci

3 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
12 mai 2003 à 23:30
GetPixel, et SetPixels , sont des API , en clair , ce sont des fonctions codées dans les Dll du noyau de Windows
pour les utiliser , rien de plus facile , tu les declares comme suit :

(attention au public / Private , selon le cas..)

Public Declare Function GetPixel Lib "gdi32" Alias "GetPixel" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Public Declare Function SetPixel Lib "gdi32" Alias "SetPixel" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long


et lorsque tu dis utiliser une fonction codées par qq'un de Vbfrance , je m'inquiete de pas te voir utiliser l'API designée pour faire ca , ni les methodes pset et point des PictureBoxes

si tu veux des infos , ou des explications, hesites pas.....

-----------------------------------------------------------------------
By Renfield

thomas_reynald@msn.com

Aucune touche n'a été bléssée lors de la saisie de ce texte..........
0
cs_Battant Messages postés 11 Date d'inscription lundi 21 avril 2003 Statut Membre Dernière intervention 19 novembre 2003
13 mai 2003 à 16:47
Bonjour,

merci d'avoir répondu si rapidement à mon mail.

J'aimerais juste savoir le rôle de la fonction setpixel ainsi que celui des mothodes pset et point d'une pictureBox.

pourriez-vous en outre me donner un petit exemple d'application de la fonctoin et des deux méthodes dont je viens de vou parler ?

A bientôt

Battant
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 mai 2003 à 17:06
pset et setpixel font la meme chose... elle permettent de changer la couleur d'un pixel.

point et getpixel , eux , permettent de recuperer la couleur d'un pixel.

voici comment on se sert de cela....

ok , crée une nouvelle Form , ajoutes une picture box , et un bouton

insere ce code...

Private Declare Function SetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long

'mettre a 1 pour utiliser les API
#Const UtiliserAPI = 1

Private Sub Command1_Click()
    #If UtiliserAPI = 0 Then
        Picture1.AutoRedraw = True
    #End If
    
    Randomize
    For y = 0 To Picture1.ScaleHeight
        For x = 0 To Picture1.ScaleWidth
            #If UtiliserAPI = 0 Then
                Picture1.PSet (x, y), RGB(255 * Rnd, 255 * Rnd, 255 * Rnd)
            #Else
                SetPixel Picture1.hdc, x, y, RGB(255 * Rnd, 255 * Rnd, 255 * Rnd)
            #End If
        Next x
    Next y
End Sub

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
    #If UtiliserAPI = 0 Then
        Me.Caption = Hex$(Picture1.Point(x, y))
    #Else
        Me.Caption = Hex$(GetPixel(Picture1.hdc, x, y))
    #End If
End Sub
0
Rejoignez-nous