begin process at 2012 05 24 23:44:32
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > POT DE PEINTURE (REMPLISSAGE/FLOOD)

POT DE PEINTURE (REMPLISSAGE/FLOOD)


 Information sur la source

Note :
8,67 / 10 - par 3 personnes
8,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Graphique Classé sous :floodfill, remplir, algorithme, peinture, graphique Niveau :Débutant Date de création :09/11/2005 Vu / téléchargé :9 205 / 598

Auteur : ScSami

Ecrire un message privé
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
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

  • (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
(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


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture MOUSE SPEED AND WEIGHT : RETOUR DE FORCE VIRTUEL !
DE RGB À R, G ET B, LA MEILLEUR TECHNIQUE EN VB !
Source avec Zip Source avec une capture INTERSECTION
Source avec Zip Source avec une capture CHAÎNE VERTÉBRALE OPTIMALE
Source avec Zip Source avec une capture CHAÎNE VERTÉBRALE MINIMALE

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) IMAGE ANIMÉE DANS UNE COLONNE DE DATAGRIDVIEW par foliv57
Source avec Zip Source avec une capture Source .NET (Dotnet) TRIEUR DE PHOTOS par Le Pivert
Source avec Zip Source .NET (Dotnet) ENREGISTREMENT ET DIAGRAMME par jpot31
REDIMENSIONNEMENT D'IMAGE PHP par JStevens
Source avec Zip Source avec une capture Source .NET (Dotnet) POIDS D'UNE IMAGE BMP DE PROFONDEUR 24 BITS par dheroux

 Sources en rapport avec celle ci

Source avec Zip Source .NET (Dotnet) APPLICATION DE DESSIN par fsafsafsaf
Source avec Zip Source avec une capture Source .NET (Dotnet) GÉNÉRATEUR DE GRAPHIQUE par pascamau
Source avec Zip Source avec une capture Source .NET (Dotnet) REPRֹSENTATION GRAPHIQUE DE FONCTION par ShayW
Source avec une capture Source .NET (Dotnet) USER CONTROL POUR UN HISTOGRAMME À BARRES VERTICALES par tchconst
Source avec une capture Source .NET (Dotnet) HISTOGRAMME - SUITE - GRAPHIQUE DE BARRES VERTICALES POUR UN... par tchconst

Commentaires et avis

Commentaire de DARKSIDIOUS le 09/11/2005 17:11:20 administrateur CS

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 !

DarK Sidious

Commentaire de ScSami le 09/11/2005 17:51:37

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.

Commentaire de DARKSIDIOUS le 09/11/2005 18:01:15 administrateur CS

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

Commentaire de Gobillot le 09/11/2005 20:42:25

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

Commentaire de ScSami le 09/11/2005 23:52:58

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 !

Commentaire de Gobillot le 10/11/2005 00:08:50

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

Commentaire de Renfield le 24/11/2005 13:52:00 administrateur CS

ajouter mémorisation des points traités... accelerera la chose

Commentaire de lexsty le 21/04/2006 20:36:03

       Bonjour.

Très bien pour les commentaires pédagogiques.

  A+ JP

Commentaire de ScSami le 21/04/2006 23:46:09

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 :)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Image et graphique [ par ERICVB7 ] Bonjour,Je programme en VB.NET (sous XP) et je cherche un code source me permettant de remplir une zone de couleur uniforme dans une image (type bitma remplir un contrôle de l'interface graphique par des informations sur une base des données [ par boualiasma ] Bonjour, Je voulais faire une interface graphique en utilisant le VB.net car j'ai déjà installé le visual studio 2008. Je voulais faire quelques 'fo Graphique : Algorithme pour les graduations sur les axes [ par Icewall ] Bonjour à tous !!!Je suis entrain de réfléchir à un moyen de créer des graphiques.Je suis parti d'un exemple simple : la répartition des ventes d'un p fermeture d'un userform sans le remplir... [ par nasilo ] Re bonjour encore moi....Je suis a nouveau confronté à un problème que je n'arrive pas à résoudre...parmi tant d'autres...Dans mon userform j'ai "obli Création de graphique avec VBA [ par CandideLeReveur ] Bonjour,Je voudrais créer un graphique avec VBA mais le programme ci-dessous ne fonctionne pas. Savez-vous pourquoi?Range("B3:B9,D3:D9,F3:F9").Select  Création d'une interface graphique faisant appel a des .bat [ par wilddawn ] remplir combobox avec requete sql [ par dededanseur ] Bonjour,J'ai créer un petit formulaire qui importe des données dans une base.Mais il faut au préalable choisir son nom dans le liste.Je voudrais que l Copier un graphique en cassant le lien [ par b0uh34 ] Bonjour à tous,     Voila mon souci:      J'ai crée une macro qui génère des données. Puis elle crée automatiquement des graphiques dans des nouvelles comment faire une répresentationn graphique d'un indicateur? [ par kmfseg ] slt tout le monde mon pfe  tourne autour un tableau de bord prospectif d'une société. je pa pu construire une répresentation graphique des ses indicat Remplir automatiquement un formulaire PDF [ par Hach_net ] Bonjour .j'ai un formulaire PDF vierge (C:\Exemple.pdf) que je veux remplir automatiquement avec des données et l'enregistrer sur le bureau.merci de m


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,089 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales