如何设置或更改GdkPixbuf.Pixbuf的颜色?
我可以创建并填写:
pixbuf = GdkPixbuf.Pixbuf.new(GdkPixbuf.Colorspace.RGB, False, 8, 32, 16)
pixbuf.fill(0x000000)
但是如何从Gdk.RGBA或Gdk.Color获取颜色?
编辑:
我现在尝试了很多事情,但是没有任何效果,例如:
import webcolors
from gi.repository import Gdk
color = Gdk.color_parse("orange")
hexe = webcolors.rgb_to_hex(color.to_floats())
但是我仍然有一个问题,我一开始需要0x,而且必须是一个数字。
最佳答案
哇,这很难。我终于找到了解决方案:
pixbuf = GdkPixbuf.Pixbuf.new(GdkPixbuf.Colorspace.RGB, True, 8, 16, 16)
color = Gdk.color_parse("orange")
fillr = (color.red / 256) << 24
fillg = (color.green / 256) << 16
fillb = (color.blue / 256) << 8
fillcolor = fillr | fillg | fillb | 255
pixbuf.fill(fillcolor)
感谢starcal(https://github.com/ilius/starcal/blob/master/scal3/ui_gtk/desktop.py)提供的代码,并感谢http://nullege.com/帮助我找到了这个。