cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013
-
9 nov. 2005 à 17:11
ScSami
Messages postés1488Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 3 décembre 2007
-
21 avril 2006 à 23:46
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
ScSami
Messages postés1488Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 3 décembre 200724 21 avril 2006 à 23:46
Ah ben ça fait plaisir !!! Merci ^^
Y'en a au moins un qui a apprécié :D
Je me demande d'ailleurs qui à bien pu me coller un petit "3" en douce... hum...
Enfin, Lexsty, s'il te reste des question tant sur ce code que sur ses alternatives (comme suggéré), demande moi :)
lexsty
Messages postés169Date d'inscriptionsamedi 10 décembre 2005StatutMembreDernière intervention18 juin 2017 21 avril 2006 à 20:36
Bonjour.
Très bien pour les commentaires pédagogiques.
A+ JP
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 24 nov. 2005 à 13:52
ajouter mémorisation des points traités... accelerera la chose
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 10 nov. 2005 à 00:08
je te met ma première méthode,
les couleurs sont dans Ztab()
les tailles de l'image sont bw * bh
les couleurs de références à tester sont Rx, Vx, Bx et en plus il y a la transparence dans Tx
Mpixel() c'est la fonction qui traite le point sélectionné.
il y a plus court à écrire
seulement il y a des problèmes de pile et on est limité en taille.
Private Sub Fill(i As Integer, j As Integer)
If Ztab(i, j).Red <> Rx Then Exit Sub
If Ztab(i, j).Green <> Vx Then Exit Sub
If Ztab(i, j).Blue <> Bx Then Exit Sub
If Ztab(i, j).Trans <> Tx Then Exit Sub
Mpixel i, j
If j > 0 Then Fill i, j - 1
If i > 0 Then Fill i - 1, j
If j + 1 < bh Then Fill i, j + 1
If i + 1 < bw Then Fill i + 1, j
End Sub
ScSami
Messages postés1488Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 3 décembre 200724 9 nov. 2005 à 23:52
Dark : Ce code est vieux... Je lui ai juste arrangé un peu... Mais tu sais, quand on bosse pas comme tu dis, on en est pas moins toujours occupé avec des rendez-vous à la con qui servent à rien où on t'écoute pas! Ce matin même...
Ceci dit, lorsque tu travaille, tu as toujours le temps!!! De part chez moi on dit souvent "Qui veut peut" ce avec quoi je ne suis pas vraiment d'accord mais qui relève un point important : on a toujours le choix! Autrement dit, tu n'as qu'a travailler moins si le fait d'aider les autres (sur VBF ou autre) ou de coder des petits progs comme ça t'apporte plus que de posséder ta zolie petite maison avant tes 40 ans pour pouvoir payer les études de tes 2 charmant gosses que tu feras - quoi qu'il arrive - avant 35 ans... La vie est trop courte! Apprenons des erreurs des autres, évitons les clichés et faisons de nos vies ce que n'en voulons et non ce que les autres voudrait nous en voir faire!
Tout ça pour dire : je ne regrette pas ;-)
Goby :
Si j'ai employé 2 matrices (à l'époque) c'est justement pour ne pas avoir un tableau à ralonge! Mais je te l'accorde, y'a sans aucun doute plus simple à faire!
Quant aux points testés plusieurs fois, je ne me souvient plus vraiment... C'est possible! Mais il me semble quand même que j'ai blondé le système, via un teste de couleur de fond, afin de ne pas boucler at-eternam.
Mais bon, je te fais quand même confiance! Ceci dit, je le répète, la performance n'était pas à l'ordre du jour!
Pi je le redit aussi : il doit exister une tripoté de méthodes différentes pour faire ça (un peu comme pour dessiner un simple cercle!). A vous d'en trouver de plus originales!
Pi qui sait, une compile ne serait peut-être pas de trop sur VBF !
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 9 nov. 2005 à 20:42
avec ta méthode, sais tu que tu retestes plusieurs fois le même point ?
la preuve, le MsgBox est sorti 4 fois.
pourquoi prendre 2 matrices, une seule suffit, il suffit de mettre les nouveaux points à tester à la suite.
d'autre part pour éviter de tester plusieurs fois le même point, il faut une autre table, ça divise les temps par 4.
Private Sub TstPoint(ByVal SensTableaux As Boolean, ByVal X, ByVal Y)
Dim varCoulPicked As Long
If X 220 And Y 190 Then
MsgBox "oui"
End If
etc ...
Daniel
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 9 nov. 2005 à 18:01
Hum, et encore tu ne bosse pas il me semble : j'étais comme toi au début, et dès que tu rentre dans la vie professionnelle, tu n'a plus le temps pour t'amuser comme un petit fou sur le traitement graphique ! sniff !
DarK Sidious
ScSami
Messages postés1488Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 3 décembre 200724 9 nov. 2005 à 17:51
Oui, c'est vrai, tu as raison. C'est clair que si on veut être efficace il faut passer par les API ou des class comme la tienne ;-)
Le but de cette source est plus de comprendre le concept que d'obtenir un algo "opérationnel" !
Elle est donc déstinée :
- Aux débutants s'il veulent s'exercer sur un problème pas facile
- A tous les passionnés qui aiment réinventer la roue en découpants les existantes pour comprendre pourquoi elle sont toutes si rondes ;-)
Je vais réfléchir à un message d'avertissement plus clair à l'attention des débutants à mettre dans mes sources de ce genre que j'affectionne particulièrement (puisque fondement de ma propre passion)...
Bon, je l'jure, il m'en reste plus beaucoup au fond de mes tiroirs... Encore quelques unes pi j'arrête ;-)
Prochaines prévue (à commenter et formater) :
- Les courbes de Bézier...
- Stéganographie ou Travail sur les bits
et peut-être un tuto sur la couleur ou, justement, le travail sur les bits...
Pi j'ai toujours l'envie de coder une contrôle du genre de celui de Photoshop, tu sais, avec plusieurs "Calques", plein de fonctions de manipulation pi la gestion de l'anti-aliasing... Mais je sais pas si ça en vaut la peinne avec VB.Net (que je n'ai pas et que je ne connais donc pas) [???].
Bref, tant de choses à faire et si peu de temps! Ainsi va la vie comme on dit.
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 9 nov. 2005 à 17:11
Quitte à montrer la technique de remplissage, il aurait fallu également présenter les fonctions de l'API FloodFill et ExtFloodFill qui sont plus optimisées que ta fonction perso : si un débutant recherche une fonction de remplissage, qu'il tombe sur ta source, et ne cherche pas plus loin, il perdra pas mal de temps pour essayer d'optimiser ton algorithme et obtenir les performances de paint par exemple, alors qu'avec l'utilisation directe des fonctions standard de Windows, c'est bien plus rapide.
Note : en utilisant ma classe de gestion d'image, tu aurais pu obtenir un résultat plus rapide !
Sinon, c'est une bonne source pédagogique très commentée qui plus est !
21 avril 2006 à 23:46
Y'en a au moins un qui a apprécié :D
Je me demande d'ailleurs qui à bien pu me coller un petit "3" en douce... hum...
Enfin, Lexsty, s'il te reste des question tant sur ce code que sur ses alternatives (comme suggéré), demande moi :)
21 avril 2006 à 20:36
Très bien pour les commentaires pédagogiques.
A+ JP
24 nov. 2005 à 13:52
10 nov. 2005 à 00:08
les couleurs sont dans Ztab()
les tailles de l'image sont bw * bh
les couleurs de références à tester sont Rx, Vx, Bx et en plus il y a la transparence dans Tx
Mpixel() c'est la fonction qui traite le point sélectionné.
il y a plus court à écrire
seulement il y a des problèmes de pile et on est limité en taille.
Private Sub Fill(i As Integer, j As Integer)
If Ztab(i, j).Red <> Rx Then Exit Sub
If Ztab(i, j).Green <> Vx Then Exit Sub
If Ztab(i, j).Blue <> Bx Then Exit Sub
If Ztab(i, j).Trans <> Tx Then Exit Sub
Mpixel i, j
If j > 0 Then Fill i, j - 1
If i > 0 Then Fill i - 1, j
If j + 1 < bh Then Fill i, j + 1
If i + 1 < bw Then Fill i + 1, j
End Sub
9 nov. 2005 à 23:52
Ceci dit, lorsque tu travaille, tu as toujours le temps!!! De part chez moi on dit souvent "Qui veut peut" ce avec quoi je ne suis pas vraiment d'accord mais qui relève un point important : on a toujours le choix! Autrement dit, tu n'as qu'a travailler moins si le fait d'aider les autres (sur VBF ou autre) ou de coder des petits progs comme ça t'apporte plus que de posséder ta zolie petite maison avant tes 40 ans pour pouvoir payer les études de tes 2 charmant gosses que tu feras - quoi qu'il arrive - avant 35 ans... La vie est trop courte! Apprenons des erreurs des autres, évitons les clichés et faisons de nos vies ce que n'en voulons et non ce que les autres voudrait nous en voir faire!
Tout ça pour dire : je ne regrette pas ;-)
Goby :
Si j'ai employé 2 matrices (à l'époque) c'est justement pour ne pas avoir un tableau à ralonge! Mais je te l'accorde, y'a sans aucun doute plus simple à faire!
Quant aux points testés plusieurs fois, je ne me souvient plus vraiment... C'est possible! Mais il me semble quand même que j'ai blondé le système, via un teste de couleur de fond, afin de ne pas boucler at-eternam.
Mais bon, je te fais quand même confiance! Ceci dit, je le répète, la performance n'était pas à l'ordre du jour!
Pi je le redit aussi : il doit exister une tripoté de méthodes différentes pour faire ça (un peu comme pour dessiner un simple cercle!). A vous d'en trouver de plus originales!
Pi qui sait, une compile ne serait peut-être pas de trop sur VBF !
9 nov. 2005 à 20:42
la preuve, le MsgBox est sorti 4 fois.
pourquoi prendre 2 matrices, une seule suffit, il suffit de mettre les nouveaux points à tester à la suite.
d'autre part pour éviter de tester plusieurs fois le même point, il faut une autre table, ça divise les temps par 4.
Private Sub TstPoint(ByVal SensTableaux As Boolean, ByVal X, ByVal Y)
Dim varCoulPicked As Long
If X 220 And Y 190 Then
MsgBox "oui"
End If
etc ...
Daniel
9 nov. 2005 à 18:01
DarK Sidious
9 nov. 2005 à 17:51
Le but de cette source est plus de comprendre le concept que d'obtenir un algo "opérationnel" !
Elle est donc déstinée :
- Aux débutants s'il veulent s'exercer sur un problème pas facile
- A tous les passionnés qui aiment réinventer la roue en découpants les existantes pour comprendre pourquoi elle sont toutes si rondes ;-)
Je vais réfléchir à un message d'avertissement plus clair à l'attention des débutants à mettre dans mes sources de ce genre que j'affectionne particulièrement (puisque fondement de ma propre passion)...
Bon, je l'jure, il m'en reste plus beaucoup au fond de mes tiroirs... Encore quelques unes pi j'arrête ;-)
Prochaines prévue (à commenter et formater) :
- Les courbes de Bézier...
- Stéganographie ou Travail sur les bits
et peut-être un tuto sur la couleur ou, justement, le travail sur les bits...
Pi j'ai toujours l'envie de coder une contrôle du genre de celui de Photoshop, tu sais, avec plusieurs "Calques", plein de fonctions de manipulation pi la gestion de l'anti-aliasing... Mais je sais pas si ça en vaut la peinne avec VB.Net (que je n'ai pas et que je ne connais donc pas) [???].
Bref, tant de choses à faire et si peu de temps! Ainsi va la vie comme on dit.
9 nov. 2005 à 17:11
Note : en utilisant ma classe de gestion d'image, tu aurais pu obtenir un résultat plus rapide !
Sinon, c'est une bonne source pédagogique très commentée qui plus est !
DarK Sidious