如何设置或更改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/帮助我找到了这个。

10-06 04:04