Publicité
+ Répondre à la discussion
Page 1 sur 2 12 DernièreDernière
Affichage des résultats 1 à 20 sur 23
  1. #1
    Membre régulier Avatar de retwas
    Homme Profil pro Robin
    Développeur informatique
    Inscrit en
    mars 2010
    Messages
    227
    Détails du profil
    Informations personnelles :
    Nom : Homme Robin
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2010
    Messages : 227
    Points : 81
    Points
    81

    Par défaut Courbe de Polybezier

    Bonjour,

    Sur un TImage, à chaque clic je crée un trait avec le point précédent.
    A la fin mon point final est mon point de départ de sorte a avoir une forme fermée.

    Je remplis un "array of TPoint" avec les points de ma courbe.

    Quand je fais un canvas.polybezier(ptPlan) cela ne m'affiche rien.. à moins de mettre énormément de point de contrôle..

    Pouvez vous m'aider ?

    Merci

  2. #2
    Membre Expert
    Avatar de Archimède
    Homme Profil pro anthony LAURENT
    Enseignant
    Inscrit en
    avril 2005
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Nom : Homme anthony LAURENT
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : avril 2005
    Messages : 1 181
    Points : 1 119
    Points
    1 119

    Par défaut

    Citation Envoyé par retwas Voir le message
    Bonjour,

    Sur un TImage, à chaque clic je crée un trait avec le point précédent.
    Merci
    Mieux vaut utiliser polyline dans ce cas non ?

  3. #3
    Membre Expert
    Avatar de Archimède
    Homme Profil pro anthony LAURENT
    Enseignant
    Inscrit en
    avril 2005
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Nom : Homme anthony LAURENT
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : avril 2005
    Messages : 1 181
    Points : 1 119
    Points
    1 119

    Par défaut

    Un truc comme ça :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
      private
        { Déclarations privées }
        dimtab:integer;
        tabpoints:array of TPoint;
        Procedure Addline(pt:Tpoint);
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    Procedure TForm1.Addline(pt:Tpoint);
    var i:integer;
    begin
      inc(dimtab);
      setlength(tabpoints,dimtab);
      tabpoints[dimtab-1]:=pt;
      for i:=0 to dimtab-1 do canvas.polyline(tabpoints);
    end;
     
    procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
     Addline(point(x,y));
    end;
     
    end.
    @+

  4. #4
    Membre régulier Avatar de retwas
    Homme Profil pro Robin
    Développeur informatique
    Inscrit en
    mars 2010
    Messages
    227
    Détails du profil
    Informations personnelles :
    Nom : Homme Robin
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2010
    Messages : 227
    Points : 81
    Points
    81

    Par défaut

    Merci, mais le fait d'utiliser un polyline revient au même nan?

    Pour lisser les angles je dois forcement faire un polybezier, a moins que je n'est pas compris ?

  5. #5
    Membre Expert
    Avatar de Archimède
    Homme Profil pro anthony LAURENT
    Enseignant
    Inscrit en
    avril 2005
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Nom : Homme anthony LAURENT
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : avril 2005
    Messages : 1 181
    Points : 1 119
    Points
    1 119

    Par défaut

    non :
    La première courbe est dessinée à partir du premier point jusqu'au quatrième point, en utilisant le deuxième et le troisième points comme points de contrôle
    il est normal de ne pas obtenir une courbe à chaque click avec polybézier...

    @+

  6. #6
    Membre régulier Avatar de retwas
    Homme Profil pro Robin
    Développeur informatique
    Inscrit en
    mars 2010
    Messages
    227
    Détails du profil
    Informations personnelles :
    Nom : Homme Robin
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2010
    Messages : 227
    Points : 81
    Points
    81

    Par défaut

    Enfaîte je construit pas courbe et je remplis mon tableau de TPoint.

    Une fois que la courbe est tracé je fais un polybezier(tabPT) mais c'est la que j'obtiens rien..

    Je vais ressayer avec polyline pour voir

  7. #7
    Membre Expert
    Avatar de Archimède
    Homme Profil pro anthony LAURENT
    Enseignant
    Inscrit en
    avril 2005
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Nom : Homme anthony LAURENT
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : avril 2005
    Messages : 1 181
    Points : 1 119
    Points
    1 119

    Par défaut

    Si tu remplis d'abord ton tableau et que tu dessines en faisant un polybézier, il n'y a pas de raison que la courbe ne se s'affiche pas !

    En remplaçant polyline par polybezier dans l'exemple que je t'ai donné, tu remarqueras que les portions de courbe s'affichent un click sur 3 sauf pour le début qui se fait sur 4 clicks...normal...

  8. #8
    Membre régulier Avatar de retwas
    Homme Profil pro Robin
    Développeur informatique
    Inscrit en
    mars 2010
    Messages
    227
    Détails du profil
    Informations personnelles :
    Nom : Homme Robin
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2010
    Messages : 227
    Points : 81
    Points
    81

    Par défaut

    Justement cela marche si j'ai 7 ou 10 points, si j'en est 9 ou 5 ou autres il n'y a rien qui s'affiche

    Cela marche si mon nombre de point est de la forme (3*n)+1 ... :'(

  9. #9
    Membre Expert
    Avatar de Archimède
    Homme Profil pro anthony LAURENT
    Enseignant
    Inscrit en
    avril 2005
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Nom : Homme anthony LAURENT
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : avril 2005
    Messages : 1 181
    Points : 1 119
    Points
    1 119

    Par défaut

    Tu as l'unité je crois : UBezier qui gère toutes les manières de tracer des courbes de bézier... Fais une recherche sur google, elle est facile à trouver...

    @+

  10. #10
    Membre régulier Avatar de retwas
    Homme Profil pro Robin
    Développeur informatique
    Inscrit en
    mars 2010
    Messages
    227
    Détails du profil
    Informations personnelles :
    Nom : Homme Robin
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2010
    Messages : 227
    Points : 81
    Points
    81

    Par défaut

    Merci je vais regarder avec UBezier

  11. #11
    Membre régulier Avatar de retwas
    Homme Profil pro Robin
    Développeur informatique
    Inscrit en
    mars 2010
    Messages
    227
    Détails du profil
    Informations personnelles :
    Nom : Homme Robin
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2010
    Messages : 227
    Points : 81
    Points
    81

    Par défaut

    Rebon jour/soir..

    Finalement c'est bon ça marche parfaitement, je combine du polybezier avec du polyline.. parfait

    Par contre sur le doubleClick/mouseMove de mon TImage savez comment je peut détecter que je suis sur une portion de la courbe/droite ?

    Peut être récupérer les points X et Y, pixel par pixel pour voir si mon X Y de mon MouseMove est dessus, mais comment avoir cette ensemble de point.. j'ai peur que ce soit lourd quand même..

    Merci

  12. #12
    Membre émérite Avatar de Charly910
    Homme Profil pro Charly
    Ingénieur TP
    Inscrit en
    décembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Nom : Homme Charly
    Localisation : France

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

    Informations forums :
    Inscription : décembre 2006
    Messages : 717
    Points : 817
    Points
    817

    Par défaut

    Bonjour,

    je l'ai déjà fait pour sélectionner des points ou des segments à la souris, en calculant la distance du curseur à ces éléments.

    Pour 50 segments et une centaine de points cela ne pose pas de problème, c'est très rapide.

    Par contre, dans mon cas, je connais les coordonnées des points et donc c'est facile - peut être que l'unité UBeziers permet de calculer ces coordonnées ?

    A+

    Charly

  13. #13
    Membre Expert
    Avatar de Archimède
    Homme Profil pro anthony LAURENT
    Enseignant
    Inscrit en
    avril 2005
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Nom : Homme anthony LAURENT
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : avril 2005
    Messages : 1 181
    Points : 1 119
    Points
    1 119

    Par défaut

    oui, si l'image n'est pas trop grande, tu peux toujours balayer celle-ci et en ayant fixé une couleur particulière pour ta courbe, récupérer avec getpixel la couleur de chaque pixel de l'image et ainsi la comparer à la couleur fixée.
    scanline pour gagner en rapidité...

  14. #14
    Membre régulier Avatar de retwas
    Homme Profil pro Robin
    Développeur informatique
    Inscrit en
    mars 2010
    Messages
    227
    Détails du profil
    Informations personnelles :
    Nom : Homme Robin
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2010
    Messages : 227
    Points : 81
    Points
    81

    Par défaut

    Merci, j'ai fait comme ça du coup, je regarde la couleur du pixel pour voir si cela correspond à la couleur de ma courbe.

  15. #15
    Membre régulier Avatar de retwas
    Homme Profil pro Robin
    Développeur informatique
    Inscrit en
    mars 2010
    Messages
    227
    Détails du profil
    Informations personnelles :
    Nom : Homme Robin
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2010
    Messages : 227
    Points : 81
    Points
    81

    Par défaut

    Je reviens vous voir pour savoir comment avoir des courbes bien lisse ?

    Sur l'image a gauche c'est ce que j'ai, et a droite c'est ce que je voudrais..



    Je comprends pas pourquoi mes courbes font "des escaliers" ..

    Merci

  16. #16
    Membre Expert
    Avatar de Archimède
    Homme Profil pro anthony LAURENT
    Enseignant
    Inscrit en
    avril 2005
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Nom : Homme anthony LAURENT
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : avril 2005
    Messages : 1 181
    Points : 1 119
    Points
    1 119

    Par défaut

    Une procédure d'antialiasing...

  17. #17
    Membre régulier Avatar de retwas
    Homme Profil pro Robin
    Développeur informatique
    Inscrit en
    mars 2010
    Messages
    227
    Détails du profil
    Informations personnelles :
    Nom : Homme Robin
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2010
    Messages : 227
    Points : 81
    Points
    81

    Par défaut

    Citation Envoyé par Archimède Voir le message
    Une procédure d'antialiasing...
    J'ai regardé et j'ai trouvé quelques solutions que je trouve gourmande, avec Graphics 32 ou OpenGL.

    Il n'existe pas une procedure toute simple ou on lui passe un ensemble de TPoint et qui nous tracerais une courbe/droite avec antialiasing ?

    Merci

  18. #18
    Membre Expert
    Avatar de Archimède
    Homme Profil pro anthony LAURENT
    Enseignant
    Inscrit en
    avril 2005
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Nom : Homme anthony LAURENT
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : avril 2005
    Messages : 1 181
    Points : 1 119
    Points
    1 119

    Par défaut

    ça se trouve assez facilement...

    ici sur un Timage :http://www.swissdelphicenter.ch/torr...de.php?id=1484 par exemple.

    je viens de tester, c'est lourd et disgracieux...surtout sur ton fond blanc quadrillé. Tu peux trouver mieux...

    Sinon directement sur tes points, regarde du côté des posts de Gilbert Geyer. C'est un spécialiste dans ce genre de truc...

  19. #19
    Membre régulier Avatar de retwas
    Homme Profil pro Robin
    Développeur informatique
    Inscrit en
    mars 2010
    Messages
    227
    Détails du profil
    Informations personnelles :
    Nom : Homme Robin
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2010
    Messages : 227
    Points : 81
    Points
    81

    Par défaut

    Oui pareil j'en est essayé plusieurs et c'est vraiment lourd..
    Surtout que je redessine mon Canvas dans le mouseMove quand attrape le point d'une courbe, je regarde ce que tu m'as dit et je reviens, merci

  20. #20
    Expert Confirmé Sénior
    Avatar de Paul TOTH
    Homme Profil pro Paul TOTH
    Freelance
    Inscrit en
    novembre 2002
    Messages
    5 471
    Détails du profil
    Informations personnelles :
    Nom : Homme Paul TOTH
    Âge : 44
    Localisation : Réunion

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

    Informations forums :
    Inscription : novembre 2002
    Messages : 5 471
    Points : 14 326
    Points
    14 326

    Par défaut

    pour l'antialiasing il y a l'algorithme de Xiaolin Wu
    http://stackoverflow.com/questions/3...n-for-delphi-7
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Produits : UPnP, RemoteOffice, FlashPascal
    Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5%

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •