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

 Delphi Discussion :

Dessin d'un motif dans un polygone


Sujet :

Delphi

  1. #1
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 346
    Points : 3 124
    Points
    3 124
    Par défaut Dessin d'un motif dans un polygone
    Bonjour à tous,

    est il possible d'afficher un motif ou une texture stockée par exemple dans un Bmp, dans un polygone dessiné sur un Canvas.

    (si possible de façon simple sans OpenGL ...)

    Merci

    Charly

  2. #2
    Membre confirmé
    Homme Profil pro
    Santé
    Inscrit en
    Septembre 2010
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Santé
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2010
    Messages : 290
    Points : 534
    Points
    534
    Par défaut
    Salut,

    Tu affectes la texture au Canvas.Brush.Bitmap de ton polygone, puis tu fais un Canvas.FloodFill(X,Y,TCol,fsBorder).
    X,Y étant des coordonnées quelconques à l'intérieur du polygone,
    TCol la couleur da la ligne délimitant le polygone.

    C'est pas très rapide, mais c'est simple et ça fonctionne bien.

  3. #3
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    tu peux utiliser le principe des masques de transparence pour faire cela

    voir ce très vieil exemple

    http://tothpaul.free.fr/tips.php?pv_transbmp

    le masque c'est simplement ton polygone en monochrome, l'image à copier étant ta texture
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Bonjour,

    Tu peux aussi dessiner le polygone et son remplissage texturé en même temps :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TForm1.btnPolygoneClick(Sender: TObject);
    var        bmp : tBitMap;
    begin     With imgFond.Canvas do
              begin            
                bmp := tBitMap.create;
                bmp.LoadFromFile(ExtractFilePath(Application.ExeName)+'mCuirVert.bmp');
                brush.Bitmap:=bmp;
                Polygon([Point(10, 10), Point(30, 180), Point(130, 30), Point(240, 120)]);
                bmp.free;
              end;
    end;
    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  5. #5
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 346
    Points : 3 124
    Points
    3 124
    Par défaut
    Merci beaucoup à tous les trois

    j'essaye cela tout de suite

    Charly

  6. #6
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 346
    Points : 3 124
    Points
    3 124
    Par défaut
    Super,

    je ne me souvenais plus que brush avait un propriété Bitmap !

    C'est exactement ce que je cherchais

    merci encore

    A+

    Charly

    PS : je vais aussi tester la méthode de Paul

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

Discussions similaires

  1. Savoir si un point est dans un polygone.
    Par poly128 dans le forum Langage
    Réponses: 8
    Dernier message: 18/11/2008, 09h34
  2. [MFC] Dessin d'un CButton dans une CView ?
    Par ZeMike dans le forum MFC
    Réponses: 1
    Dernier message: 12/04/2006, 15h06
  3. Savoir si un point est inclus dans un polygone quelconque
    Par SuperBIBI dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 02/08/2005, 19h02
  4. [SQLite]éliminer un motif dans des champ TEXT
    Par Invité(e) dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/05/2005, 17h44
  5. [GEOMETRIE] Cercle inscrit dans un polygone
    Par bebeours dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 10/02/2004, 14h18

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