Pot de peinture (remplissage/flood)

Soyez le premier à donner votre avis sur cette source.

Vue 10 950 fois - Téléchargée 788 fois

Description

Où pot de peinture. Programmé en VB6, ce code a pour vocation de montrer une technique - parmis bien d'autres - de programmation de "pot de peinture". Cette technique n'est pas la meilleur, le code n'est pas le meilleur, mais le débutant s'y retrouvera en apprenant, via un GRAND NOMBRE DE COMMENTAIRES, bon nombre de concepts élémentaires et techniques sous-jascentes. Ce code permet en outre de prendre conscience du mode opératoire potentiel de cet outil si répandu.

J'ai également pensé aux non détenteurs du VB6 en fournissant l'exécutable (qu'il faut cependant renommer). Mais ATTENTION, sont utilisation est A VOS RISQUES ET PERILS !!! Ni moi ni VBFrance n'en portera la responçabilité! Le fait de renommer le fichier engage démontre votre responçabilité.

Amusez-vous bien!

Source / Exemple :


(Cf. Zip)
0) Scan (boucle) de la 1ere matrice :
1) Prendre un pixel préalablement mémorisé dans la matrice (tableau) en cours
2) Tester la couleur du fond
3) La modifier au besoin
4) Prendre ses 4 pixels directement contigus (haut, bas, gauche, droite)
5) Les mémoriser à leur tour dans une autre matrice (tableau)
6) Terminer le scanne (boucle)
7) Inverser l'utilisation des matrices
8) Recommencer

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

ScSami
Messages postés
1490
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
3 décembre 2007
15 -
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és
173
Date d'inscription
samedi 10 décembre 2005
Statut
Membre
Dernière intervention
18 juin 2017
-
Bonjour.

Très bien pour les commentaires pédagogiques.

A+ JP
Renfield
Messages postés
17283
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
56 -
ajouter mémorisation des points traités... accelerera la chose
Gobillot
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
31 mars 2015
16 -
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és
1490
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
3 décembre 2007
15 -
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 !

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.