0
我使用開羅,並希望一次呈現一個顏色組件。例如,如果我渲染一組藍色矩形,然後渲染一組紅色矩形,我希望它們重疊的位置是紫色而不是紅色。使用set_source_rgb(ctx, 0.0, 1.0, 0.0)
不起作用,因爲它會用零覆蓋其他通道。使用透明度也不起作用,因爲它同樣影響所有渠道。我想要一種只渲染到一個頻道的方法。開羅只呈現給特定的顏色組件
這可能嗎?謝謝。使用
我使用開羅,並希望一次呈現一個顏色組件。例如,如果我渲染一組藍色矩形,然後渲染一組紅色矩形,我希望它們重疊的位置是紫色而不是紅色。使用set_source_rgb(ctx, 0.0, 1.0, 0.0)
不起作用,因爲它會用零覆蓋其他通道。使用透明度也不起作用,因爲它同樣影響所有渠道。我想要一種只渲染到一個頻道的方法。開羅只呈現給特定的顏色組件
這可能嗎?謝謝。使用
CAIRO_OPERATOR_ADD
代替CAIRO_OPERATOR_OVER
(默認):
#include <cairo.h>
int main() {
cairo_surface_t *s = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 20, 20);
cairo_t *cr = cairo_create(s);
cairo_set_operator(cr, CAIRO_OPERATOR_ADD);
/* Render blue */
cairo_set_source_rgb(cr, 0, 0, 1);
cairo_rectangle(cr, 0, 0, 15, 15);
cairo_fill(cr);
/* Render red */
cairo_set_source_rgb(cr, 1, 0, 0);
cairo_rectangle(cr, 5, 5, 15, 15);
cairo_fill(cr);
cairo_surface_write_to_png(s, "out.png");
cairo_destroy(cr);
cairo_surface_destroy(s);
return 0;
}