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 :

Format png et transparence


Sujet :

Lazarus Pascal

  1. #1
    Nouveau membre du Club
    Format png et transparence
    bonjour
    je n'arrive pas à afficher une image png transparente, l'image s'affiche mais pas de transparence avec:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    var
    myimage: TPortableNetworkGraphic;
     
    begin 
      myimage:=TPortableNetworkGraphic.Create;
      myimage.LoadFromLazarusResource('Image_png') ;
     myimage.TransparentColor:=clred;
      myimage.Transparent:=true;
      Image_png.Canvas.Draw(0,0,myimage);
      myimage.Free;
     
    end;

  2. #2
    Membre expert
    Bonsoir

    il faut activer la transparence

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      Image.Transparent := TRUE; // On active la transparence des images png
      Image.TransparentColor :=  clFuchsia;   // On Doit utiliser la couleur par defaut pour la transparence
      // Sinon choisir un pixel transparent de l'image Image.TransparentColor := FPColorToTColor(Image.Canvas.Colors[0,0]);


    A+
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  3. #3
    Membre actif
    Salut,
    voir ici dans les FAQ :

    Il faut initialiser le fond de l'image avant l'appel pour avoir un fond alpha dessus, et ensuite d'utiliser la méthode CopyRect (et non Draw) :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Image2.Transparent := True; 
    Image2.Picture.LoadFromFile('test.png'); 
    Image1.Transparent := True; 
    Image1.Canvas.Brush.Color := clGreen; 
    Image1.Canvas.FillRect(Rect(0,0,1024,512)); 
    Image1.Canvas.CopyRect(Rect(0,0,100,100),Image2.Canvas,Rect(0,0,100,100));


    Nullosse

  4. #4
    Membre expert
    Salut, ça marche également avec la fonction Draw il faut cependant s'assurer que le bitmap de destination soit lui aussi en 32 bit (pixelformat = pft32bit)
    C'est ce que j'ai fait dans l'exemple de FreeCell

    A+
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  5. #5
    Nouveau membre du Club
    Bonjour

    avec ce code, ça marche sans transparentcolor pour afficher mon image dans un coin de ma fenêtre:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      MyImage:=TPortableNetworkGraphic.Create;
      MyImage.LoadFromLazarusResource('Image_png') ;
      Image_png.Canvas.Brush.Color:=clForm;
      Image_png.Canvas.FillRect(Rect(0,0,Image_png.Width,Image_png.Height));
      Image_png.Canvas.Draw(0,0,MyImage);
      MyImage.Free;

  6. #6
    Membre expert
    Hello n'oublis pas de marquer le sujet "comme résolu" merci.
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP