jarod43
Messages postés7Date d'inscriptionmardi 20 juin 2006StatutMembreDernière intervention17 juillet 2008
-
17 juil. 2008 à 14:16
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 2021
-
17 juil. 2008 à 18:52
Bonjour, je suis à la recherche d'une fonction en vb.net qui permette de faire la même action que le pot de peinture de paint. C'est à dire pouvoir sélectionner automatiquement une zone de même couleur d'une image et pouvoir remplacer cette couleur par une autre.
Quelqu'un a t'il déjà eu le problème et si oui avez vous trouvé des solutions en .net car j'en trouve pas.
J'ai absolument besoin de cette fonction pour finir mon projet.
jarod43
Messages postés7Date d'inscriptionmardi 20 juin 2006StatutMembreDernière intervention17 juillet 2008 17 juil. 2008 à 15:17
merci pour la réponse encore mais comment intégrer déjà extfloodfill à vb.net car déjà vb.net ne reconnait pas hdc (je ne sais pas ce que c'est sincèrement) et la fonction extfloodfill.
Je suis un peu perdu là même ;en lisant la fiche que tu m'as donné.
Vous n’avez pas trouvé la réponse que vous recherchez ?
la seule astuce a trouver :
Dim hDc As IntPtr = PictureBox1.CreateGraphics.GetHdc
Public Class Form1
Private Declare Function CreateSolidBrush Lib "gdi32.dll" (ByVal crColor As Integer) As IntPtr
Private Declare Function DeleteObject Lib "gdi32.dll" (ByVal hObject As IntPtr) As Integer
Private Declare Function ExtFloodFill Lib "gdi32" (ByVal hdc As IntPtr, ByVal nXStart As Integer, ByVal nYStart As Integer, ByVal crColor As Integer, ByVal fuFillType As Integer) As Integer
Private Declare Function SelectObject Lib "gdi32.dll" (ByVal hdc As IntPtr, ByVal hObject As IntPtr) As IntPtr
Private Const FLOODFILLSURFACE As Integer = 1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim oGr As Graphics = PictureBox1.CreateGraphics
oGr.DrawEllipse(Pens.Black, 20, 20, 200, 200)
End Sub
Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
Dim hBrush As IntPtr
Dim hDc As IntPtr = PictureBox1.CreateGraphics.GetHdc
hBrush = CreateSolidBrush(&HFF)
hBrush = SelectObject(hDc, hBrush)
ExtFloodFill(hDc, e.X, e.Y, &HFFFFFF, FLOODFILLSURFACE)
DeleteObject(SelectObject(hDc, hBrush))
End Sub
End Class
jarod43
Messages postés7Date d'inscriptionmardi 20 juin 2006StatutMembreDernière intervention17 juillet 2008 17 juil. 2008 à 16:18
Merci cela fonctionne bien c'est exactement ce que je voulais, par contre peux tu me dire stp comment trouver tous les codes couleur car là ça me rempli en rouge.
Deuxième question lorsque je clique 2 fois sur mon image j'ai un message du type :
Une exception non gérée du type 'System.InvalidOperationException' s'est produite dans system.drawing.dll
Informations supplémentaires : L'objet est actuellement utilisé ailleurs.
comment ça ce fait et comment pallier à ce problème ?
jarod43
Messages postés7Date d'inscriptionmardi 20 juin 2006StatutMembreDernière intervention17 juillet 2008 17 juil. 2008 à 17:17
je sais pas en fait mon application est un peu complexe, après le remplissage je change l'image de ma picturebox par une autre et je pense que c'est là où j'ai l'exception : comment puis je gérer ceci en libérant l'utlisation du fichier image.
J'espère avoir été assez clair
Mais sinon encore merci je fait un grand bon en vb net grace à toi lol