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 :

Couleur de transparence Tbitmap


Sujet :

Composants FMX Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur DELPHI
    Inscrit en
    Janvier 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 127
    Par défaut Couleur de transparence Tbitmap
    Bonjour,

    Voilà j'aimerai définir une couleur en transparence sur un Tbitmap, mais je ne trouve pas le moyen sous FMX.

    Merci de votre aide.

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 094
    Par défaut
    Tu as DrawBitmap qui gère AOpacity pour l'ensemble de l'image
    Sinon, on peut penser que FMX gère le Canal Alpha puis que FMX.Types.TBitmap.Pixels utilise un TAlphaColor

    Utilse un PNG, cela gère naturellement le fond transparent du PNG, c'est un format conçu pour cela !

    Sinon utilise un Mask pour déterminer zones transparentes
    le TMaskToAlphaEffect me semble tout à fait approprié !

    voir aussi TColorKeyAlphaEffect avec une Tolerance Zéro, je n'ai pas bien compris comment il fonctionne, il semble qu'il soit nécessaire d'avoir déjà un couleur de transparence dans l'image PNG
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre éclairé

    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2006
    Messages
    621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Janvier 2006
    Messages : 621
    Par défaut
    Salut à tous,
    à mon avis, Opacity ne règlera pas le problème : il gère la consistance globale du contrôle, et ne fait pas de différence.
    Pareil pour le Canal Alpha : ca tient du même principe à mon avis.
    Certains softs savent attribuer à une couleur l'attribut "transparent" (genre Office par exemple : quand on sélectionne un endroit de l'image, on peut déclarer la couleur en dessous comme devant être transparente. Par contre je ne suis pas sur d'avoir vu ça dans FMX.

    Le format PNG gère effectivement une couleur comme "transparente", mais je n'ai jamais fait le test avec FMX. Mais à vue de nez, ça me semble être la seule façon de procéder, sauf à redéfinir la méhode Paint pour qu'elle ne dessine pas un point de la couleur donnée. Un peu brutal...

    L'autre solution, est de mettre une couleur de fond de ton TImage de la couleur de celle que tu veux invisible. Ca simule le resultat.
    Je sais pas si c'est possible d'ailleurs...

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur DELPHI
    Inscrit en
    Janvier 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 127
    Par défaut
    Merci pour votre réponse,

    Malheureusement je ne peut pas utiliser des PNG, je décompresse des fichiers BMP en "Runtime".

    Je ne sais pas comment utilisé un mask pour déterminer zones transparentes avec le TMaskToAlphaEffect !

    Je continue à chercher comment il fonctionne, si quelqu'un a des idées, elles sont bien venues!

    Merci.

  5. #5
    Membre éclairé

    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2006
    Messages
    621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Janvier 2006
    Messages : 621
    Par défaut
    je suis pas sur que le Mask va t'aider. De ce que j'ai pu en voir, il permet de définir une zone sur laquelle on va appliquer un effet. Mais pour une image repérer les points d'une couleur particulière et définir une zone dessus, ça risque de faire pas mal de zones...

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur DELPHI
    Inscrit en
    Janvier 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 127
    Par défaut
    Merci arkhamon pour votre aide.

    Effectivement je pense la même chose.
    Je continue mes recherches....

  7. #7
    Membre éclairé

    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2006
    Messages
    621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Janvier 2006
    Messages : 621
    Par défaut
    J'ai trouvé un truc en regardant un peu :

    La définition de TAlphaColorRec contient entre autre :
    Null = TAlphaColor($00000000);

    Si tu sais la couleur des points que tu veux rendre transparents, tu as une solution un peu brutale qui consiste à balayer ton image point par point, et lui affecter cette constante en lieu et place de la couleur du point.

    L'octet de poids fort de la couleur ($00000000) donne l'intensité du point, à savoir $00 le rend transparent.

    Ca devrait te permettre d'atteindre ton objectif. Après, c'est un peu artisanal comme méthode mais bon...

    Même, tu peux décider de rendre plsuierus couleurs transparents, en modificant uniquement la valeur Alpha d'un certain nombre de points en fonction de leur couleurs de départ. Par contre la boucle riisque d'être un peu longue à exécuter. Si tu peux, arrange toi pour désactiver le redessin du contrôle durant la boucle.

    ensuite autre méthode peut être un peu plus propre ou moins couteuse en resources : rempalcer les couleurs directement dans le BMP avant de l'envoyer à l'affichage. Ca accélèrera peut etre la manip... Il suffirait par exemple de mettre $000000 à chaque point que tu veux rendre invisible. D'un autre côté, le BMP ne gérant pas le Alpha (sauf avis contraire), je sais pas trop comment tu mettras le Alpha à $00...

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

Discussions similaires

  1. Réponses: 28
    Dernier message: 29/12/2011, 19h24
  2. "Merger" deux images avec une couleur de transparence
    Par MaelstroeM dans le forum VB.NET
    Réponses: 7
    Dernier message: 14/09/2007, 09h34
  3. Couleur de transparence pour curseur de souris
    Par womannosky dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 20/05/2007, 19h26
  4. Réponses: 7
    Dernier message: 04/06/2006, 12h24
  5. [Java2D]Couleur de transparence
    Par Guybrush dans le forum 2D
    Réponses: 11
    Dernier message: 21/11/2005, 16h58

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