Cjvg
Messages postés330Date d'inscriptionmercredi 6 décembre 2000StatutMembreDernière intervention26 octobre 2017
-
25 févr. 2012 à 12:30
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018
-
25 févr. 2012 à 17:52
Bonjour
Cette procédure a fonctionné correctement. L'instruction SetPixelV (Ou Setpixel) ne marche plus ?
'-----------------------------------------------------------------------------------'
' '
' Remplace une ou plusieurs Couleurs par une Autre '
' '
'-----------------------------------------------------------------------------------'
Sub ReplaceCoul(Picture As PictureBox)
Dim CouleurLu As String
Dim OldCouleur As String
Dim NewCouleur As Long
OldCouleur = " " & NAM.Text4(1).Text & " " ' Liste des Couleurs à remplacer .
NewCouleur = Val(NAM.Text4(0).Text) ' Couleur de remplacement .
Picture.ScaleMode = 1
For I1 = 0 To Picture.ScaleWidth
NAM.Label10.Caption = I1 & "/" & Picture.ScaleWidth
DoEvents
For I2 = 0 To Picture.ScaleHeight
CouleurLu = " " & GetPixel(Picture.hdc, I1, I2) & " "
If InStr(OldCouleur, CouleurLu) > 0 Then
SetPixelV Picture.hdc, I1, I2, NewCouleur
Picture.Refresh
End If
Next I2
Next I1
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018220 25 févr. 2012 à 12:45
Bonjour,
Ta question en appelle au moins deux autres :
1) Où est ta fonction SetPixelV et que contient-elle ?
2) es-tu certain de développer sous VB6 (la présente section du forum) ?
et une observation :
- Appeler Picture (mot réservé sous VB6) un objet est pour le moins étonnant.
Tu pourrais peut-être faire un petit tour sur les sources déposés par mon "frère jumeau" jmfmarques. Il est probable que tu y trouveras ce que tu cherches.
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Cjvg
Messages postés330Date d'inscriptionmercredi 6 décembre 2000StatutMembreDernière intervention26 octobre 2017 25 févr. 2012 à 12:57
Comme cela est dit dans ma question: Cette procédure a fonctionné correctement
Dans le même Module
Public Declare Function SetPixelV Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Byte
Public Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
Public Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Public Declare Function GetCursorPos Lib "user32" (lpPoint As PointAPI) As Long
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018220 25 févr. 2012 à 13:15
Je ne vois rien d'autre à ajouter à ce que je t'ai dit, sauf, peut-être :
- répéter que tu devrais éviter le mot Picture
- typer I1 et I2
- que s'il s'agit de remplacer une couleur exacte, SetPixel sera recommandé
- que la fonction GetLastError de l'Api de Windows est à utiliser pour y voir clair.
Le fait que
Cette procédure a fonctionné correctement.
ne révèle rien de concret, ni de précis.
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Vous n’avez pas trouvé la réponse que vous recherchez ?
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018220 25 févr. 2012 à 16:26
Je ne sais pas comment tu as cherché parmi mes sources (mais sous le pseudo jmfmarques).
L'analyse du bout de code que tu montres donne à penser que, dans un contrôle picturebox, tu veux remplacer une couleur par une autre. Si tel est bien le cas, l'un de mes sources montre comment le faire, tant par effet "rouleau" (pour les pixels contigus dans cette couleur) que pour tous les pixels, contigus ou non, de cette couleur.
Tu verras que, dans un cas comme dans l'autre, je me sers de la même fonction de l'API de Windows, considérant simplement que des pixels isolés ne sont jamais rien d'autre que des aires également (et je traites des aires)
Voici le lien vers ce source :
Tapez le texte de l'url ici. Mais en cherchant un peu plus, tu trouveras un autre source de moi (toujours sous le pseudo jmfmarques) qui, lui, va beaucoup plus loin en matière de transformation des images !
Celui-ci, par exemple :
Tapez le texte de l'url ici. utilise la fonction SetPixel
Ces deux sources sont très très vieux (voilà bientôt 15 ans, en fait, que je les ai écrits). Ils ont été écrits à l'aide de VB5 !(raison pour laquelle tu y trouveras entre autres des fonctions "maison" pour faire ce que font déjà des fonctions de VB6, non existantes sous VB5.
Je les ai assortis d'un volume considérable de commentaires, pour en faciliter la compréhension, notamment pour ce qui est de l'utilisation des fonctions de l'Api de Windows.
Voilà
si tu ne trouves pas ton bonheur dans tout cela, je ne vois plus comment t'aider.
Je voudrais ajouter une chose : rien ne t'empêche de remplacer la fonction serpixel de l'Api de Windows par la méthode Pset de VB6 (elle te tend les bras).
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018220 25 févr. 2012 à 16:28
Bon.
Je vois ta réponse frappée pendant que je frappais la mienne.
Bon dimanche.
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018220 25 févr. 2012 à 17:52
J'ai oublié de mentionner qu'il faut également remplacer ScalMode = 1
par Picture.ScaleMode = 3
Pas nécessairement.
Intéresse-toi aux méthodes ScaleX et ScaleY
Autres points d'intérêt :
propriétés
TwipsperPixelX et TwipsPerPixelY de l'objet Screen
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient