IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants VCL Delphi Discussion :

Remplissage d'une zone d'un canvas


Sujet :

Composants VCL Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 24
    Points : 22
    Points
    22
    Par défaut Remplissage d'une zone d'un canvas
    hello, c'est encore moi.. , voila, je cherche a remplir une zone de mon canvas (timage) qui a une forme quelconque par une image.....et plus spécialement en type mosaique....quelqu'un a une idée ?..

    MERCI
    delphi 3,6,7;win 2000, red hat 9;
    _______________________________
    http://delphi.redkernel-softwares.com

  2. #2
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Tu entends quoi par forme Quelconque ?
    De taille variable ? ou de forme Variable (Hexa, Rond, Polygonale, etc ...

    La premiere c'est facile : 2 Boucles imbirquees et tu utilise la fonction : Canvas.CopyRect qui te copie un rectange source dans un rectange dest ...
    LA double boucle te permet de deplacer les coordonnés de ton rect Dest de maniere a avoir ton effet "Mozaique"

    Pour la 2e .. c'est franchement plus hard !! Va faloir faire ca pixels/pixels ou au mieux ligne/lignes .... avec une batterie de tests et calculs pour savoir si le pixel est dans ta zone ou non ...
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 24
    Points : 22
    Points
    22
    Par défaut
    ben hélas c'ets bien la deuxième que je veux faire....pourquoi faire simple quand on peut faire compliqué... enfin...mes zones se présentent par a gauche en haut et bas des lignes dont je connais les limites et a droite une forme quelconque....et je veux que toute la zone se remplissent en mosaique par une petite image...
    delphi 3,6,7;win 2000, red hat 9;
    _______________________________
    http://delphi.redkernel-softwares.com

  4. #4
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Bon alors .. essayons de faire simple sur du compliqué ;pp

    LE principe reste sensiblement le meme.

    Tu determine les coordonnes du carre qui englobe ton image (ie : Coordonnes des points le plus a droite, le plus a gauche, le plus haut et le plus bas de ton image.)

    Une fois ce rectangle determine tu procede comme la solution 1 : Double boucle imbriquee de pas ImageMozaique.height et ImagesMozaique.Width.
    de maniere a ce ces images soient copiees les unes a cote des autres pour remplir toute la surface de ton carre englobant.

    la copie du rectangle (a chaques iteration) ne se fera pas par CopyRect, mais pixels par pixels (double boucle imbriquee pour parcourir ton image) et tu n'affiche que les pixels qui sont dans la Zone de ta forme reele.

    Une 2e methode assez efficace consisterais a faire ce qu'on appelle un "MAsque". Tu cree un TImage invisible avec la forme en noir sur fond blanc (que tu peux importer directement a partir d'un fichier bmp si il ne doit pas changer en cours de programme).
    Ensuite, tu cree une autre image, de meme taille avec cette fois ci ta mozaique (un carre rempli) soit a l'aide de l'importation d'une image deja mozaiqué, soit dynamiquement avec les Copyrect, etc...
    Une fois tes 2 images de meme taille crees, il ne reste plus qu'a parcourir les 2 images pixels par pixels et de ne copier dans l'image finale que les points de l'image mozaique qio correspondent a un point noir de l'image masque.

    Voila qques indications pour te lancer la dedans ...
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  5. #5
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    http://nono40.developpez.com/sources/source0011.html

    J'ai retrouve ca ... de chez Nono40 ... le gourour de Developpez ^^
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 24
    Points : 22
    Points
    22
    Par défaut
    merci bien je pense qu'avec ca ca devrait aller !! merci pour les idées

    delphi 3,6,7;win 2000, red hat 9;
    _______________________________
    http://delphi.redkernel-softwares.com

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2D] Remplissage d'une zone depuis les bordures
    Par mister3957 dans le forum API graphiques
    Réponses: 6
    Dernier message: 24/05/2010, 15h09
  2. remplissage d'une Zone de liste
    Par nsqualli dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/11/2008, 10h26
  3. Réponses: 8
    Dernier message: 26/04/2008, 13h24
  4. [PHP-JS] Automatiser le remplissage d'une zone texte
    Par khamett dans le forum Langage
    Réponses: 4
    Dernier message: 10/10/2007, 08h40
  5. [VB]Remplissage d'une zone précise de la Picture Box
    Par Tyrael62 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 21/01/2006, 19h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo