Soyez le premier à donner votre avis sur cette source.
Vue 11 554 fois - Téléchargée 1 060 fois
Private Sub cmdTrace_Click(Index As Integer) 'déclaration des variables privées Dim oGestionImageSrc As New CGestionImage Dim oGestionImageDest As New CGestionImage Dim iFor1 As Integer 'stocke les valeurs de la boucle For->Next Dim iFor2 As Integer 'stocke les valeurs de la boucle For->Next Dim iBleu As Byte 'stocke la composante bleue à récupèrer Dim iVert As Byte 'stocke la composante verte à récupèrer Dim iRouge As Byte 'stocke la composante rouge à récupèrer Dim iBleuCouleur As Double 'stocke la composante bleue à appliquer Dim iVertCouleur As Double 'stocke la composante verte à appliquer Dim iRougeCouleur As Double 'stocke la composante rouge à appliquer 'on définit les contrôles sources et destination Set oGestionImageSrc.PictureBox = pctSource Set oGestionImageDest.PictureBox = pctDest 'on parcourt les pixels 1 à 1 et on applique une matrice de tracé de contour For iFor1 = 0 To pctDest.ScaleWidth For iFor2 = 0 To pctDest.ScaleHeight 'on définit l'index du zoom sur X et Y Let iBleuCouleur = 0 Let iVertCouleur = 0 Let iRougeCouleur = 0 'on définit la couleur du pixel courant à partir des pixels alentours Call oGestionImageSrc.GetPixelRGB(iFor1 - 1, iFor2 - 1, iRouge, iVert, iBleu) Let iBleuCouleur = iBleuCouleur + iBleu * 2 Let iVertCouleur = iVertCouleur + iVert * 2 Let iRougeCouleur = iRougeCouleur + iRouge * 2 Call oGestionImageSrc.GetPixelRGB(iFor1 + 1, iFor2 + 1, iRouge, iVert, iBleu) Let iBleuCouleur = iBleuCouleur - iBleu * 2 Let iVertCouleur = iVertCouleur - iVert * 2 Let iRougeCouleur = iRougeCouleur - iRouge * 2 Call oGestionImageSrc.GetPixelRGB(iFor1, iFor2 - 1, iRouge, iVert, iBleu) Let iBleuCouleur = iBleuCouleur + iBleu Let iVertCouleur = iVertCouleur + iVert Let iRougeCouleur = iRougeCouleur + iRouge Call oGestionImageSrc.GetPixelRGB(iFor1, iFor2 + 1, iRouge, iVert, iBleu) Let iBleuCouleur = iBleuCouleur - iBleu Let iVertCouleur = iVertCouleur - iVert Let iRougeCouleur = iRougeCouleur - iRouge Call oGestionImageSrc.GetPixelRGB(iFor1 - 1, iFor2, iRouge, iVert, iBleu) Let iBleuCouleur = iBleuCouleur + iBleu Let iVertCouleur = iVertCouleur + iVert Let iRougeCouleur = iRougeCouleur + iRouge Call oGestionImageSrc.GetPixelRGB(iFor1 + 1, iFor2, iRouge, iVert, iBleu) Let iBleuCouleur = iBleuCouleur - iBleu Let iVertCouleur = iVertCouleur - iVert Let iRougeCouleur = iRougeCouleur - iRouge If iBleuCouleur > 255 Then Let iBleuCouleur = 255 If iVertCouleur > 255 Then Let iVertCouleur = 255 If iRougeCouleur > 255 Then Let iRougeCouleur = 255 If iBleuCouleur < 0 Then Let iBleuCouleur = 0 If iVertCouleur < 0 Then Let iVertCouleur = 0 If iRougeCouleur < 0 Then Let iRougeCouleur = 0 If Index = 0 Then 'contour + image Let iVertCouleur = Abs(iVertCouleur - iVert) Let iBleuCouleur = Abs(iBleuCouleur - iBleu) Let iRougeCouleur = Abs(iRougeCouleur - iRouge) End If Call oGestionImageDest.SetPixelRGB(iFor1, iFor2, iRougeCouleur, iVertCouleur, iBleuCouleur) DoEvents Next iFor2 Next iFor1 Call oGestionImageDest.Refresh End Sub
24 janv. 2005 à 13:56
DarK Sidious
24 janv. 2005 à 13:47
Si je dois tracer un cercle d epaisseur 2 pixels avec la methode de Bresenham.
Je trace en fait 2 cercles, 1 avec un rayou r, l autre r+1.
Ca marche ms sur un Display, il reste des points blancs car 4 pixels ne sont pas allumes a la bonne place. (Il y a 1 pixel d ecart)
Comment je fais pour tracer mon cercle et que tout reste noir?
24 déc. 2004 à 15:54
ce que je t'ai montré est un fake car je n'ai fait aucun algo d'anticrénelage, mais c t juste pour te montrer ce que ça doit faire.
et oui tu dis ici que c'est un tracé des contours mais ce qu'on t'avait demandé c'est un anticrénelage =)
bon aller joyeux noel, je reviendrai pas avant qqes jours =)
24 déc. 2004 à 11:31
Pour l'anticrénelage, voir ici :
http://www.vbfrance.com/code.aspx?ID=28386
Par contre, je n'obtiens pas tout à faire le même résultat que toi, mais le principe reste le même ! (j'obtiens un résultat meilleur dans certaines parties, et moins bon dans d'autres, car je ne dois pas utiliser la même matrice de flou !)
DarK Sidious
24 déc. 2004 à 10:19
++
Moustachu
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.