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 FMX Delphi Discussion :

FMX.PathData, la guerre des étoiles


Sujet :

Composants FMX Delphi

  1. #1
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    12 443
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 12 443
    Points : 33 564
    Points
    33 564
    Billets dans le blog
    40
    Par défaut FMX.PathData, la guerre des étoiles
    Bonjour,

    Oui, le titre fait sourire , accrocheur il me permet ainsi de divulguer une information sur le futur webinaire de mar. 28 janv. 2020 14:00 - 15:30

    Avant que Patrick (pprem) nous fasse sa présentation sur les SVG, j'ai refait mon bilan d'avancement de mes divers essais de chargement de fichiers SVG directement par programme.


    Le programme n'est certes pas abouti, il y a encore des points non réglés : la gestion des groupes #g incluant les images prédéfinies #define(encore que cela avance), la gestion des clipaths (je n'ai aucune idée de la manière de procéder mais cela fera un autre sujet) et enfin d'où le titre, les étoiles.
    PS. Toute suggestion sur la partie clippath sera bienvenue même si je procrastine sur ce point de même que le rendu sous les autres OS que Windows

    Malheureusement, les outils que Patrick va présenter ne sont pas plus avancés que moi sur le sujet (je précise bien s'il s'agit de FMX). Il est vrai que piocher mes exemples dans les drapeaux (fournis par wikipédia) ouvre à beaucoup plus de cas que les exemples fournis par les solutions proposées par RiverSoft, Winsoft et TMS Software.

    En image, mon problème
    Nom : Capture_1.PNG
Affichages : 133
Taille : 3,7 KoNom : Capture_2.PNG
Affichages : 133
Taille : 3,7 Ko
    une lumière peut-être dans ce tunnel, quoique en fait au niveau du programme il s'agisse d'un bogue qui pourrait peut-être me mettre sur un contournement intéressant
    Nom : Capture.PNG
Affichages : 133
Taille : 2,9 Ko
    ci-dessus l'utilisation de TMSFNCImage
    Nom : Capture_3.PNG
Affichages : 137
Taille : 16,2 Ko
    toujours les mêmes problèmes (comme dans la série starwars il va y avoir plein d'épisodes )

    Alors, oui, il s'agit d'un problème lié au fill-mode et cette question est bien sûr en rapport avec ce sujet mais il s'avère que c'était une fausse piste.

    Un futur post vous en dira un peu plus (path à tester, différences entre les étoiles ... ) si vous êtes intéressés.
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  2. #2
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    mars 2006
    Messages
    1 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : mars 2006
    Messages : 1 336
    Points : 2 518
    Points
    2 518
    Billets dans le blog
    10
    Par défaut
    Je pense que l'étoile est construite à partir de cinq segment et elle devrait l'être à partir de 10 segments

    Nom : Annotation 2020-01-24 102207.png
Affichages : 136
Taille : 7,6 Ko

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    12 443
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 12 443
    Points : 33 564
    Points
    33 564
    Billets dans le blog
    40
    Par défaut
    Tout à fait mais il s'agit de la norme w3c pour les fichiers SVG donc ce n'est pas aux données de se plier au 10 segments mais bien au "logiciel" de faire en sorte que cela soit bien interprété
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?xml version="1.0" standalone="no"?>
    <svg xmlns="http://www.w3.org/2000/svg" width="260" height="245">
    <path d="m55,237 74-228 74,228L9,96h240"/>
    </svg>
    Ce fichier ouvert dans un explorateur internet propose une étoile pleine
    le composant TPath , une étoile avec un centre non coloré.

    Pour info le drapeau du Maroc
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="900" height="600"><rect width="900" height="600" fill="#c1272d"/>
    <path d="m449.99991,224.31497-44.4674,136.87006 116.40181-84.55895H378.06451l116.4028,84.55895z" fill="none" stroke="#006233" stroke-width="14.62993431"/></svg>
    le "remplisage" de l'étoile est "none" (transparent) ce qui "fait" la couleur c'est le traitement des bordures (stroke=couleur et stoke-with= largeur)
    mon bogue (et celui de TMS) c'est dans l'interprétation de la largeur

    AMHA c'est un bogue d'interprétation du composant, le path.data étant transformé en "M55,237 L129,9 L203,237 L9,96 L249,96"
    le tout ne poserait pas de problème si le fillmode était considéré comme non-zero (fill-rule=non-zero) mais ce n'est pas une option de TPath
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  4. #4
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2002
    Messages
    3 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : mai 2002
    Messages : 3 033
    Points : 5 034
    Points
    5 034
    Par défaut
    salut

    tiens moi j'aurais dis que c'est explorer qui lit mal les infos
    plus sérieusement comme le dis ALWEBER il y a une différence
    entre utilisation de 5 segment et celle de 10

    après il faut peut être voir du cote des "Opérations booléennes" ou "opérations ensemblistes"
    dans ton cas on est enclin a penser que le Tpath par defaut utilise la Différence (ou soustraction)
    alors que dans se cas là, se serait plus l'union ou l'addition

    mes 2 cents

    PS je viens de voir deux liens intéressant qui pourrait effectivement dire d'ou vient le problème
    ce n'est pas forcement Delphi qui n'est pas cohérent

    en regardant du cote de la techno Microsoft le fameux framework .net

    voici deux lien très intéressant

    CombinedGeometry

    FillRules
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  5. #5
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    décembre 2011
    Messages
    3 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : décembre 2011
    Messages : 3 753
    Points : 13 073
    Points
    13 073
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Ce fichier ouvert dans un explorateur internet propose une étoile pleine
    le composant TPath , une étoile avec un centre non coloré.
    Sans me prononcer sur le fond de la question (que je ne connais pas), voici le résultat avec BGRABitmap, et le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    var
      bmp: TBGRABitmap;
      svg: TBGRASVG;
    begin
      bmp := TBGRABitmap.Create;
      try
        svg := TBGRASVG.Create(edSvg.Text);
        try
          bmp.SetSize(Round(svg.Width.Value), Round(svg.Height.Value));
          bmp.Fill(BGRAWhite);
          svg.Draw(bmp.Canvas2D, 0, 0, cuPixel);
          bmp.Draw(Canvas, 5, 5);
        finally
          svg.Free;
        end;
      finally
        bmp.Free;
      end;
    end;
    Je n'ai pas cherché à quoi sert l'option cuPixel, ni quelles sont les autres options disponibles.

    Ci-joint le projet Lazarus.
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    12 443
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 12 443
    Points : 33 564
    Points
    33 564
    Billets dans le blog
    40
    Par défaut
    Bonjour Roland

    FMX est un peu (beaucoup) spécial je suis bien conscient qu'utiliser des techniques "autres" assure le dessin, tu en fais la preuve.
    Tout comme la solution proposée par RiverSoft en VCL mais en FMX il y a des limitations
    Gradient Fills are limited on Mobile (limitation of FMX)
    No Clipping support in FMX
    ici, une démo flagrante en ce qui concerne les étoiles
    Nom : Capture_3.PNG
Affichages : 113
Taille : 32,7 Ko
    et ici le clipping
    Nom : Capture_2.PNG
Affichages : 111
Taille : 38,6 Ko
    vous remarquerez qu'en VCL les petites croix du drapeau de la Géorgie ont un problème (crénelage) en FMX elles sont trop grosses et le découpage n'est pas bon mais on était prévénu que cela ne fonctionnerait pas
    pour en finir avec les bogues constatés (et même si on est proche du Brexit )
    Nom : Capture_3.PNG
Affichages : 112
Taille : 24,6 Ko
    ici le programme FMX fourni une meilleure version de l'image quoique pas exacte.

    Il n'empêche que pour moi, cette solution reste la plus aboutie.


    Ce qui répond en partie aux assertions d'Alweber et Anapurna sur le nombre de segments
    Le remplissage n'est pas traité de la même manière en VCL (fill-rule:nonzero) qu'en FMX (fill-rule:evenodd). Or par défaut dans la norme c'est nonzero qui est appliqué.

    pour info le drapeau de l'Europe s'affiche correctement même en FMX, toutefois ce n'est pas en utilisant 10 segments mais grâce à quelques transformations d'un triangle
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    <defs><g id="s"><g id="c"><path id="t" d="M0,0v1h0.5z" transform="translate(0,-1)rotate(18)"/><use xlink:href="#t" transform="scale(-1,1)"/></g><g id="a"><use xlink:href="#c" transform="rotate(72)"/><use xlink:href="#c" transform="rotate(144)"/></g><use xlink:href="#a" transform="scale(-1,1)"/></g></defs>
    Nom : Capture.PNG
Affichages : 111
Taille : 17,5 Ko

    Mes fouilles ne m'ont toujours pas permis de trouver la différence entre les deux remplissages de Canvas

    Note : Oui, je sais, je vais les chercher loin mes exemples jusqu'en Eswatini (Swaziland) ou dans les pays se terminant en stan (Kazakhstan, Kirghizstan ...) la plupart fonctionnent facilement ceux que je pointe du doigt font partie des 20% de la loi des 20/80
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

Discussions similaires

  1. La guerre des boutons
    Par Akhan dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 05/09/2006, 16h11
  2. [BD] Lanfeust des étoiles
    Par Commodore dans le forum Lectures
    Réponses: 43
    Dernier message: 21/08/2006, 18h04
  3. Guerre des boutons
    Par lodan dans le forum Langage
    Réponses: 8
    Dernier message: 24/06/2006, 20h50
  4. [Linux] Afficher des étoiles
    Par xavier1936 dans le forum x86 32-bits / 64-bits
    Réponses: 4
    Dernier message: 25/10/2005, 13h28

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