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 :

TransparentBlt ne fonctionne pas sur tous les PC ?


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté Avatar de franckcl
    Homme Profil pro
    Developpeur Delphi
    Inscrit en
    Septembre 2004
    Messages
    516
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Developpeur Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 516
    Par défaut TransparentBlt ne fonctionne pas sur tous les PC ?
    Bonjour,

    J'utilise la fonction TransparentBlt pour gérer la transparence d'un bitmap avec comme couleur transparente le pixel en bas à gauche (noir dans l'exemple).

    Mon soft qui utilise cette fonction n'effectue pas la transparence sur certains PC ? je ne comprends pas pourquoi.
    - Les PC sur lesquels cela ne fonctionnent pas sont sur Windows 10 PRO, Windows 10 IOT version 21H2
    - Les PC sur lesquels cela fonctionnent sont aussi sur Windows 10 PRO et Windows 11 et version 21H2
    Donc rien ne distingue les PC.
    Peut être au niveau de la carte graphique ? je ne sais pas.

    Source du projet de test: bug_src.zip
    Executable du test: bug_exe.zip
    Image nécessaire à copier dans c:\temp\ img00.zip

    Merci de votre aide..

  2. #2
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    alors ça fonctionne chez moi mais d'après ce lien il ne faut pas utiliser le noir comme couleur de transparence
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre expérimenté Avatar de franckcl
    Homme Profil pro
    Developpeur Delphi
    Inscrit en
    Septembre 2004
    Messages
    516
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Developpeur Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 516
    Par défaut
    Je viens de remplacer le noir par du rouge et c'est le même problème.
    J'ai aussi le problème sur mon PC perso (Windows 10 pro) alors que je n'ai pas le problème sur le Pro (windows 11) et des collègues avec windows 10 pro n'ont pas le problème non plus.
    C'est vraiment bizarre, je ne sais pas ce qui fait une différence.

    Donc je debug avec mon perso pour essayer d'afficher la transparence.
    Aussi, j'ai tenté de voir s'il y avait une différence dans les propriétés de TBitmap entre mon PC Pro et perso mais ils sont identiques.

  4. #4
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    au fait pourquoi tu n'utilises pas Canvas.Draw ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Canvas.Draw(50, 50, DisplayBitmap);
      TransparentBlt(Canvas.Handle, 0, 0, DisplayBitmap.Width, DisplayBitmap.Height, DisplayBitmap.Canvas.Handle, 0, 0, DisplayBitmap.Width, DisplayBitmap.Height, ColorToRGB(clblack));
    end;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Membre expérimenté Avatar de franckcl
    Homme Profil pro
    Developpeur Delphi
    Inscrit en
    Septembre 2004
    Messages
    516
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Developpeur Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 516
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    au fait pourquoi tu n'utilises pas Canvas.Draw ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Canvas.Draw(50, 50, DisplayBitmap);
      TransparentBlt(Canvas.Handle, 0, 0, DisplayBitmap.Width, DisplayBitmap.Height, DisplayBitmap.Canvas.Handle, 0, 0, DisplayBitmap.Width, DisplayBitmap.Height, ColorToRGB(clblack));
    end;
    C'est exactement ce que j'étais en train de me dire.
    A vrai dire, je ne sais plus pour quelle raison j'avais utilisé cette fonction, d'autant plus que j'utilise Canvas.draw par ailleurs...
    je vais refaire tous les tests avec Canvas.draw

  6. #6
    Membre expérimenté Avatar de franckcl
    Homme Profil pro
    Developpeur Delphi
    Inscrit en
    Septembre 2004
    Messages
    516
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Developpeur Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 516
    Par défaut
    Je confirme que la transparence fonctionne très bien en passant par Canvas.draw et Canvas.Stretchdraw
    Je n'explique toujours pas pourquoi la fonction de l'API windows TransparentBlt ne fonctionne pas partout mais je n'irai pas plus loin dans les recherches.
    Problème résolu donc.

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

Discussions similaires

  1. Application fonctionne pas sur tous les ordinateurs
    Par will97 dans le forum VB.NET
    Réponses: 1
    Dernier message: 29/09/2009, 02h14
  2. [Déploiement] Pourquoi mon application ne fonctionne pas sur tous les postes ?
    Par Willthelegend dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 08/09/2008, 21h34
  3. Réponses: 6
    Dernier message: 14/05/2008, 17h46
  4. TXMLDocument, ne fonctionne pas sur tous les PC
    Par Neilos dans le forum C++Builder
    Réponses: 4
    Dernier message: 05/10/2005, 23h33

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