2017-09-29 7 views
0

J'ai téléchargé un tas d'icônes de https://github.com/iconic/open-iconic Les icônes sont à l'origine noires et au format .png.La meilleure façon d'intégrer une étiquette et une icône Kivy

Je souhaite ajouter une flèche pointant vers le haut sur l'une de mes toiles.

J'ai trouvé un moyen d'importer l'icône, mais le problème est que je ne peux pas changer la couleur de l'icône. Puis-je changer la couleur de l'icône dans Kivy, ou dois-je créer une image .png séparée pour chaque couleur que j'utiliserai?

<VitalBoard>: 
canvas: 
    Color: 
     rgba: 0.17, 0.89, 0.89, 1 
     hsv: 0.48, 0.80, 0.34 
    Rectangle: 
     pos: root.width * 2/3 + 20, root.height * 13/24 + 20 
     size: root.width * 2/6 - 10 , root.height * 9/24 - 20 
Label: 
    font_size: 70 
    text: "0" 
    pos: root.width * 2/3 + 20, root.height * 13/24 + 20 
    size: root.width * 2/6 - 10 , root.height * 9/24 - 20 
    Image: 
     source: 'open-iconic/png/arrow-thick-top-8x.png' 
     pos: root.width * 2/3 + 20, root.height * 13/24 + 20 
     size: root.width * 2/6 - 10 , root.height * 9/24 - 20 
     width: 74 
+0

Je ne pense pas que vous pouvez changer les couleurs de l'image dans kivy. Vous devez les changer dans un programme de peinture avant de les charger à kivy. –

Répondre

1

Kivy a un attribut de couleur sur l'image https://kivy.org/docs/api-kivy.uix.image.html#kivy.uix.image.Image.color

enter image description here

Il semble que le noir et transparent ne sont pas modifiés par celle-ci. Mais le blanc peut être changé.

GridLayout: 
    cols:4 
    canvas.before: 
     Color: 
      rgba: [1,1,1,1] 
     Rectangle: 
      pos: self.pos 
      size: self.size 

    Image: 
     source: 'arrow-bottom-8x.png' 
    Image: 
     source: 'arrow-bottom-8x.png' 
     color: [1,0,0,1] 
    Image: 
     source: 'arrow-bottom-8x.png' 
     color: [0,1,0,1] 
    Image: 
     source: 'arrow-bottom-8x.png' 
     color: [0,0,1,1] 
    Image: 
     source: 'download.png' 
    Image: 
     source: 'download.png' 
     color: [1,0,0,1] 
    Image: 
     source: 'download.png' 
     color: [0,1,0,1] 
    Image: 
     source: 'download.png' 
     color: [0,0,1,1] 

Je pense que vous devez le faire manuellement ou en dehors de kivy. Vous pouvez jeter un oeil ici par exemple https://stackoverflow.com/a/1616893/6646710

+1

Ceci est correct, la couleur est utilisée pour teinter les pixels, par multiplication, donc pendant que le blanc (1, 1, 1, 1) est transformé dans la teinte donnée, le noir (0, 0, 0, 1) est seulement affecté le canal d'opacité, et transparent (X, X, X, 0) n'est pas impacté sur le seul canal qui compte, alpha. Si vous souhaitez coloriser la partie noire de l'icône, il peut être utile de créer une version inversée dans un éditeur d'image et d'utiliser l'attribut color sur celui-ci, et d'utiliser les deux versions les unes sur les autres pour créer des combinaisons de couleurs . – Tshirtman

+1

C'est génial! Comme de nombreuses icônes apparaissent en noir, je vais donc ajouter ce code pour les futurs spectateurs en utilisant imagemagick. 'pour i dans' ls * .png'; Convertir -negate $ {i%. *}. png résultats/$ {i%. *}. png; done' Cela va inverser l'image du noir au blanc, de sorte que nous puissions utiliser le code soumis par PalimPalim –