【问题标题】:Why when painting one source to another am i getting the wrong colors为什么在将一个来源绘制到另一个来源时,我会得到错误的颜色
【发布时间】:2012-10-17 13:22:32
【问题描述】:

当我尝试以下操作时,我希望这两个图像相同,但事实并非如此!
我对开罗这件事不熟悉,这让我发疯。

#!/usr/bin/env python

import cairo

WIDTH, HEIGHT = 256, 256

pat = cairo.LinearGradient (0.0, 0.0,  0.0, 1.0)
pat.add_color_stop_rgb (1,    1,   0,  0) # First stop
pat.add_color_stop_rgb (0.5,  0,   1,  0) # Mid stop
pat.add_color_stop_rgb (0,    0,   0,  1) # Last stop

# A surface

surface0 = cairo.ImageSurface (cairo.FORMAT_RGB24, WIDTH, HEIGHT)
ctx0 = cairo.Context (surface0)
ctx0.scale (WIDTH, HEIGHT)

ctx0.set_source(pat)
ctx0.paint()

# My second surface

surface1 = cairo.ImageSurface (cairo.FORMAT_RGB24, WIDTH, HEIGHT)
ctx1 = cairo.Context (surface1)
ctx1.scale (WIDTH, HEIGHT) 

ctx1.set_source_surface(surface0, 0, 0)
ctx1.set_operator (cairo.OPERATOR_SOURCE)
ctx1.paint()


surface0.write_to_png("example0.png")
surface1.write_to_png("example1.png")

【问题讨论】:

    标签: cairo pycairo


    【解决方案1】:

    你想做什么:

    • 创建一个名为pat的模式
    • 用一定比例将该图案绘制到surface0
    • 复制surface0surface1

    对吗?

    在这种情况下,您应该删除调用 ctx1.scale (WIDTH, HEIGHT)。因此,您只会将第一个表面的左上角像素(?)绘制到第二个表面。

    【讨论】:

    • 谢谢。这准确地解释了我所看到的。我发现缩放和转换有点令人困惑,但我想我现在明白了。
    猜你喜欢
    • 2011-12-15
    • 1970-01-01
    • 2017-02-06
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多