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 :

Affichage "sympa" de cartes à jouer


Sujet :

Delphi

  1. #61
    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
    et évidemment on peut ajouter un effet d'ombre directement

    Nom : fmx2.jpg
Affichages : 131
Taille : 58,9 Ko
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  2. #62
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 694
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 694
    Points : 13 130
    Points
    13 130
    Par défaut

    Faudra une fois que je teste ce FMX...

  3. #63
    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,

    Andnotor : C'était un exemple en GDI. Pour un meilleur rendu, utiliser des images 32 bits et GDI+ le fera beaucoup mieux.
    Oui, mais je crains que Coussati ne souhaite pas utiliser GDI+.

    Entre-temps j'ai apporté quelques modifs à ton code :
    - pour mieux positionner les cartes en éventail au bas du plein écran,
    - la suppression d'une carte jouée était déjà faite hier,
    - et j'ai ajouté une routine qui effectue un anti-alias simplifié pour améliorer un peu le rendu sur les bords.
    ... et voici les résultats, ce n'est pas la perfection mais déjà un peu mieux :

    A+.

    EDIT : Avec les ajouts le code fait maintenant 248 lignes contre les 574 lignes de mon usine à gaz.
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  4. #64
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 694
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 694
    Points : 13 130
    Points
    13 130
    Par défaut
    Le mieux pour l'anti-alias et comme déjà évoqué, serait d'avoir des images plus grandes et de les réduire après rotation en spécifiant HALFTONE.

  5. #65
    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
    Re-salut,

    Andnotor : Le mieux pour l'anti-alias et comme déjà évoqué, serait d'avoir des images plus grandes et de les réduire après rotation en spécifiant HALFTONE.
    Tiens, c'est une bonne idée : demain je vais les agrandir une à une avec la méthode XBR qui n'agrandit pas la pixellisation, puis j'utiliserai StretchBblt pour les réduire après rotation...

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  6. #66
    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,

    A AndNotOr

    J'ai agrandi les images des cartes par un facteur de 3 puis après rotation avec Rotate(Cards[i], aAngle) dans la FormCreate j'ai utilisé StretchBblt avec HALFTONE pour obtenir l'anti-aliasing comme tu l'as conseillé et voici les résultats :
    On constate sur la capture d'écran ci-après que le rendu de l'anti-aliasing ainsi que le positionnement des cartes sont excellents,
    mais il y a un truc que je n'ai pas réussi :
    En fin de boucle dans la FormCreate je termine par Rotate(Cards[i], 0) sinon toutes les cartes se positionnent dans l'angle supérieur gauche de l'écran,
    mais cet appel à Rotate semble modifier Cards[i].Region de sorte qu'en survolant à la souris les cartes celles-ci sont détectées hors cartes dans les zones en clAqua ci-après, en plus ces zones devraient être invisibles puisque clAqua est déclarée comme couleur de transparence, et en plus l'ombre est celle des régions non inclinées qui encadrent celles des cartes inclinées : Comment rectifier ces anomalies ??? S'il te plait.
    Cela vaut le coup de s'accrocher vu le rendu de l'anti-aliasing ... et comme on touche au but en réglant ces anomalies...

    A+.
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  7. #67
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 694
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 694
    Points : 13 130
    Points
    13 130
    Par défaut
    D'après l'image, la région est créée trop tard, après la rotation et le stretch.
    Il faut laisser cette création directement après le chargement de l'image pour qu'elle subisse la transformation, simplement lui donner une taille 3x plus petite que l'image

  8. #68
    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,

    Andnotor : D'après l'image, la région est créée trop tard, après la rotation et le stretch.
    Il faut laisser cette création directement après le chargement de l'image pour qu'elle subisse la transformation, simplement lui donner une taille 3x plus petite que l'image
    OK, mille fois merci, j'ai modifié la Rotate pour différencier la rotation des images agrandies (fois 3 hors code) de la rotation des régions 3x plus petites,
    et voici plus bas les résultats. Le code fait maintenant 241 lignes.

    A+.

    EDIT : le ZIP qui se trouvait ici est remplacé par celui joint à mon message suivant.
    Images attachées Images attachées  
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  9. #69
    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,

    Voici les résultats d'une dernière amélioration du rendu : Suppression des petites dents de scie qui apparaissaient en particulier sur les bords de l'As de pique et du Carreau de 9 qui étaient dus aux découpage des régions.
    Suppression obtenue en déclarant clSilver comme TransparentColor et en remplaçant hors code dans les BitMap's des cartes-source la clAqua par clSilver dans les coins arrondis et les bords à laisser transparents.

    Petite question : Comment supprimer le ZIP devenu superflu dans mon message précédent ??? : Je n'ai pas trouvé dans "Gérer les pièces jointes" : Une combinaison de touches-clavier ???

    A+.
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  10. #70
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par Gilbert Geyer
    Petite question : Comment supprimer le ZIP devenu superflu dans mon message précédent ??? : Je n'ai pas trouvé dans "Gérer les pièces jointes" : Une combinaison de touches-clavier ???
    Bonjour Gilbert,
    En allant dans "Gérer les pièces jointes," on visualise des vignettes des PJ. En cochant celle désirée en bas à droite de la vignette, on peut presser la croix "X" qui apparaît en haut à droite, afin de la supprimer.
    Je te laisse faire au cas où on n'aurait pas le même rendu (j'ai l'Add-On de Bovino pour FireFox).

    Et merci à tous pour cette discussion passionnante !
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  11. #71
    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,

    Tourlourou : En cochant celle désirée en bas à droite de la vignette, on peut presser la croix "X" qui apparaît en haut à droite, afin de la supprimer
    Merci beaucoup, ça a enfin marché.

    Et merci à tous pour cette discussion passionnante !
    Vivement l'arrivée des écrans à nano-pixels pour en finir avec ces galères pour obtenir un anti-aliasing fin : lol

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  12. #72
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 694
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 694
    Points : 13 130
    Points
    13 130
    Par défaut
    Il serait encore intéressant de voir comment se comporte SetWorldTransform sur un bitmap 32 bits. Si le canal alpha suit (mais j'ai un gros doute), la région ne servirait plus qu'à la détection du clique puisque la carte pourrait être dessinée (et stretch-ée) par AlphaBlend. Et là, fini les crénages

  13. #73
    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
    Re-bonjour,

    Andnotor : Il serait encore intéressant de voir comment se comporte SetWorldTransform sur un bitmap 32 bits. Si le canal alpha suit (mais j'ai un gros doute), la région ne servirait plus qu'à la détection du clique puisque la carte pourrait être dessinée (et stretch-ée) par AlphaBlend. Et là, fini les crénages
    Oui, mais comment fait-on tout ceci ??? ... dessiner et stretcher par AlphaBlend et ceci avec le "gros doute" ???
    Bigre, je pensais en avoir fini, mais bon si on peut encore améliorer ...

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

+ Répondre à la discussion
Cette discussion est résolue.
Page 4 sur 4 PremièrePremière 1234

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