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 :

[Asphyre] Dessiner en transparence


Sujet :

Composants VCL Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 42
    Points : 26
    Points
    26
    Par défaut [Asphyre] Questions en séries...
    Bonjour,

    Je débute depuis quelques heures avec Asphyre et je n'arrive pas à dessiner des formes transparentes. C'est à dire que je souhaiterais pouvoir dessiner directement un rectangle ( ou tout autre forme ) en ayant la possibilité d'indiquer une valeur Alpha de transparence. J'ai bien lu dans le tutoriel sur les composants Asphyre que cela pouvait être possible mais je ne vois pas comment

  2. #2
    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 : 55
    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 457
    Points
    28 457
    Par défaut
    je ne sais pas, mais c'est exactement pour cela que j'utilise OpenGL sans GLScene; le net est empli de tutoriaux OpenGL notamment en C/C++ mais aussi en Delphi qui sont immédiatement utilisables sous Delphi car OpenGL est une API de type C qui s'écrit quasiment de la même façon en C et en Delphi

    l'API DirectX m'apparait complexe à côté, et l'usage de composants tiers t'imposent finalement d'apprendre à utiliser ces composants qui ne sont pas forcément plus simple sans autre forme d'aide que le petit nombre de ceux qui les utilisent...alors bon courage !

    PS: je sais que DirectDraw (la version 2D) ne supporte pas l'alphablending, tu es obligé de passer en projection orthogonale sous Direct3D...pour le reste je sais pas

  3. #3
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut chipster
    Bon en ce qui concerne mon article, c'est plus un article de présentation qu'un véritable tutoriel
    Sinon, pour dessiner en transparence, il y a pleins de fonctions très simples à utiliser dans Asphyre en utilisant le TAsphyreCanvas.
    Par exemple, pour afficher une image:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Canvas.TexMap(Image, pBounds4(X, Y, ImageWidth, ImageHeight),
              cAlpha4(Transparency), tcNull, fxBlend);
    Avec:
    • Image: TAsphyreImage: Une image dans un TAsphyreImages
    • X, Y, ImageWidth, ImageHeight: les dimensions de l'image à afficher
    • cAlpha4(Transparency): cAlpha4 est une fonction de TAsphyreDef qui permet de construire une couleur de type AARRGGBB à partir d'une valeur de transparence (Transparency de 0 à 255)
    • tcNull: Coordonnées de texture (ici coordonnées par défaut)
    • fxBlend: type d'affichage (ici, utilisant la donnée de transparence de la couleur)
    En faisant quelques tests, tu arrives facilement à ce que tu veux. C'est d'ailleurs la grande force de Asphyre

    Tu trouveras toute sorte d'exemple dans ceux fournis par Asphyre.
    Note: cet exemple sont de la version Asphyre précédente à la version disponible actuellement. C'est la seconde version Extreme si mes souvenirs sont bons.
    Tu peux aussi trouver des exemples d'applis faits avec Asphyre ici:
    http://orbedutemps.developpez.com/si...es/screenshots

    Quoi qu'il en soit, la plupart des routines de dessin 2D se font grâce au TAsphyreCanvas.

    Bon courage en tout cas

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 42
    Points : 26
    Points
    26
    Par défaut
    Merci pour la réponse Pedro. J'utilise déja la méthode TexMap pour afficher une image à partir d'un objet AsphyreImages en gérant la transparence. Mon problème est : comment ( peut-on ? ) gérer la transparence pour dessiner en utilisant les méthodes de la classe AsphyreCanvas ? Par exemple, je veux dessiner un rectangle ( exemple de l'aide ) en appliquant une transparence directement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AsphyreCanvas1.Rectangle(10, 20, 300, 200, clLime, clGreen, 1);

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 42
    Points : 26
    Points
    26
    Par défaut
    Bon et bien après pas mal de recherche sur le forum d'afterwarp, j'ai résolu mon ( premier problème ). Pour dessiner des formes en utilisant les méthodes " natives " de la classe " AsphyreCanvas" en transparence, il faut prendre en compte que les couleurs passées en paramêtres de ces méthodes sont de types $AABBGGRR. Donc il faut " rajouter " le paramêtre " alpha " à la couleur d'origine. On peut aussi passer par la fonction cRGB1 ( attention, ordre inversé des paramêtres ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AsphyreCanvas1.Rectangle(x, y,width,height,cRGB1(R,G,B,A),cRGB1(R,G,B,A), fxBlend);
    Cela-dit, d'autres problèmes se présente à moi :

    - Je n'arrive pas à dessiner ( AsphyreCanvas1.draw ) une image avec les bonnes proportions.

    - Sur une Form en mode " Windowed " les proportions de mon canvas ( et donc de tout ce que je dessine à l'intérieur ) changent dès que je change les dimensions de ma Form.

    En résumé : comment dessiner / afficher en ayant des proportions correctes et figées ?

    Question subsidiaire : Peut-on spécifier une largeur de " Pen " comme dans un canvas " normal " ( pen.size ) ?

  6. #6
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut
    Citation Envoyé par chipster45 Voir le message
    - Je n'arrive pas à dessiner ( AsphyreCanvas1.draw ) une image avec les bonnes proportions.
    Même avec tcNull comme paramètre?
    Citation Envoyé par chipster45 Voir le message
    - Sur une Form en mode " Windowed " les proportions de mon canvas ( et donc de tout ce que je dessine à l'intérieur ) changent dès que je change les dimensions de ma Form.
    Si mes souvenirs sont bons, il faut que tu redimensionnes aussi Width et height du TAsphyreCanvas

Discussions similaires

  1. Composant dessiner arrière-plan transparent
    Par blinkseb dans le forum Composants VCL
    Réponses: 9
    Dernier message: 18/09/2009, 09h47
  2. Dessin à la volée sur composant transparent
    Par orelero dans le forum 2D
    Réponses: 1
    Dernier message: 28/07/2005, 17h12
  3. [Transparent] - Comment dessiner sur 2 TImage ?
    Par TOTO32 dans le forum Langage
    Réponses: 15
    Dernier message: 08/08/2004, 01h06
  4. [Graphic] Dessiner et transparence
    Par Galima dans le forum 2D
    Réponses: 5
    Dernier message: 21/05/2004, 22h19
  5. Dessiner une ligne dans un cube transparent ?
    Par Muetdhiver dans le forum OpenGL
    Réponses: 4
    Dernier message: 04/05/2004, 11h06

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