由于clutertexture现在被标记为已弃用,我按照建议将其替换为一个内容设置为pixbuf的cluteractor。
from gi.repository import Clutter, GdkPixbuf, Cogl
Clutter.init([])
stage = Clutter.Stage()
stage.set_size(600, 300)
# old style
texture_actor = Clutter.Texture(filename='icon_big_a.png')
texture_actor.set_opacity(127)
stage.add_child(texture_actor)
# replacement because ClutterTexture is deprecated
pixbuf = GdkPixbuf.Pixbuf.new_from_file('icon_big_b.png')
pixel_format = Cogl.PixelFormat.RGBA_8888 if pixbuf.get_has_alpha()
else Cogl.PixelFormat.RGB_888
image = Clutter.Image()
image.set_data(
pixbuf.get_pixels(),
pixel_format,
pixbuf.get_width(),
pixbuf.get_height(),
pixbuf.get_rowstride(),
)
image_actor = Clutter.Actor()
image_actor.set_content_scaling_filters(
Clutter.ScalingFilter.TRILINEAR,
Clutter.ScalingFilter.LINEAR
)
image_actor.set_content(image)
image_actor.set_size(pixbuf.get_width(), pixbuf.get_height())
image_actor.set_opacity(127)
image_actor.move_by(300, 0)
stage.add_child(image_actor)
stage.show()
Clutter.main()
一切正常,但当我改变演员的不透明度为127,它变暗的背景,即使它是白色的。
这是一个git的代码和问题的截图
当我将不透明度设置为255时,一切看起来都像它应该的那样,白色就是白色。
您需要将您的Clutter版本更新到大于或等于1.16.2的版本(最新的1.16版本是1.16.4)。ClutterImage
中有一个bug,导致混合色被不必要地预相乘:
https://git.gnome.org/browse/clutter/commit/?h=clutter - 1.16, id = 32 ccff85254f731cef6dab88d302eb3dcba93887