为什么在将一个光源绘制到另一个光源时,我得到了错误的颜色

时间:2012-10-17 13:22:32

标签: cairo pycairo

当我尝试以下内容时,我希望两张图片相同,但不是! 我对这个开罗的事情不熟悉,这让我很生气。

#!/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")

1 个答案:

答案 0 :(得分:1)

您要做的是:

  • 创建名为pat
  • 的模式
  • 使用某种比例将该模式绘制到surface0
  • surface0复制到surface1

右?

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