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

Lazarus Pascal Discussion :

TImage rempli par TBitmap donne un résultat différent selon la propriété Transparent sous Linux [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut TImage rempli par TBitmap donne un résultat différent selon la propriété Transparent sous Linux
    Bonsoir,

    Je suis en train de vivre des cauchemars et je perds des heures et des heures de ma vie à chercher des solutions à des erreurs de calcul qui n'en sont pas, en fait, et au final c'est un vrai enfer...

    Sur l'image ci-dessous vous avez le résultat d'un TBitmap rempli par calcul et assigné à un TImage posé sur un TPanel (gris) et avec Image.Left := 1;
    Bien sûr ce montage de deux copies d'écran est beaucoup zoomé pour bien voir les détails car, oui, des fois il me faut utiliser The Gimp pour voir où j'en suis tellement c'est confus et effroyable.
    Mais il débloque, là, le Jipété ?
    Nan nan, juste qu'il pète les plombs après avoir passé des heures à essayer de solutionner un bug qui, au final, n'existe pas !

    Regardez bien l'image ci-dessous, et particulièrement la bande grise à gauche du début du dégradé : vue, la différence de taille entre la copie de gauche et celle de droite ? Un pixel d'écart.
    Et cette différence est simplement liée à l'état de la transparence du TImage, False à gauche et True à droite dans l'inspecteur d'objets, c'est la seule modif entre les deux runs...
    Nom : transparent_ou_pas.jpg
Affichages : 158
Taille : 13,8 Ko

    Et quand j'utilise un color picker sur le tout début du rouge, je mesure 255,0,0 à gauche, et 255,4,0 à droite, ce qui confirme bien que la première colonne du TBitmap a disparu (où ?) en activant la transparence du TImage.
    Quand je pense que je l'avais activée justement pour voir si mes calculs tombaient juste (au départ le TImage était aligné alClient dans le TPanel à la bonne dimension, ce qui m'aurait permis de voir d'éventuelles erreurs...)

    Bug présent sous Linux/GTK2 Laz1.4/FPC2.6.2 et Laz1.6/FPC3.0 mais pas sous XP/Laz1.6/FPC3.0

    Linux est vraiment le parent pauvre, quoi..
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  2. #2
    Membre chevronné

    Homme Profil pro
    au repos
    Inscrit en
    Février 2014
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : au repos

    Informations forums :
    Inscription : Février 2014
    Messages : 429
    Points : 1 884
    Points
    1 884
    Par défaut
    Salut JP.

    Dans un Bitmap que l'on veut afficher en transparence, si on n'a pas indiqué la couleur de transparence, cette couleur est celle du pixel inférieur gauche.
    Dans ton cas, le rouge pur (255,0,0).
    Comme tu n'as du rouge pur que dans la première colonne de pixels, celle-ci devient transparente, ce qui donne l'impression d'un décalage de positionnement du TImage.

    Cordialement
    Thierry

  3. #3
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Salut Thierry,
    Citation Envoyé par ThWilliam Voir le message
    Dans un Bitmap que l'on veut afficher en transparence, si on n'a pas indiqué la couleur de transparence, cette couleur est celle du pixel inférieur gauche.
    Dans ton cas, le rouge pur (255,0,0).
    C'est vrai que j'ai pensé à quelque chose comme ça après avoir posté, mais je ne me souvenais plus du tout de cette histoire de coin inférieur gauche.

    Ceci expliquerait cela, mais je n'ai pas édité mon post à cause de ça :
    Citation Envoyé par Jipété Voir le message
    Bug présent Comportement visible sous Linux/GTK2 Laz1.4/FPC2.6.2 et Laz1.6/FPC3.0 mais pas sous XP/Laz1.6/FPC3.0
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  4. #4
    Membre chevronné

    Homme Profil pro
    au repos
    Inscrit en
    Février 2014
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : au repos

    Informations forums :
    Inscription : Février 2014
    Messages : 429
    Points : 1 884
    Points
    1 884
    Par défaut
    Je viens de faire un test sous Windows 7, lazarus 1.6, FPC 3.0.0

    Bmp (24 ou 32 bits) avec la première colonne en rouge, le reste en bleu.
    J'obtiens bien le comportement que tu as sous Linux : en transparent, je ne vois plus la ligne rouge.

    Je parlerais plutôt d'un bug XP-Lazarus.

  5. #5
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Citation Envoyé par ThWilliam Voir le message
    Je parlerais plutôt d'un bug XP-Lazarus.
    Bon, OK, je coche , alors.

    Merci pour ton test, plus qu'à se graver au fer rouge dans la mémoire
    Citation Envoyé par ThWilliam Voir le message
    si on n'a pas indiqué la couleur de transparence, cette couleur est celle du pixel inférieur gauche.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/06/2015, 22h24
  2. La même formule donne des résultats différents
    Par shadelv dans le forum Excel
    Réponses: 3
    Dernier message: 01/10/2012, 11h18
  3. Réponses: 1
    Dernier message: 15/09/2010, 21h00
  4. Mêmes donnés mais résultats différents
    Par Chiwawa dans le forum Langage
    Réponses: 2
    Dernier message: 24/07/2009, 23h55
  5. 2 executions d'un programe C graphique avec SDL me donne des résultats différents
    Par Brin d'if dans le forum Développement 2D, 3D et Jeux
    Réponses: 4
    Dernier message: 03/12/2007, 10h21

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