gpt4 book ai didi

c++ - CAIRO_OPERATOR_CLEAR 未按预期工作

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:22:47 25 4
gpt4 key购买 nike

我想删除之前使用 Cairo 和 C++ 填充的部分形状。

考虑以下 MWE:

void test(cairo_t *cr){
cairo_set_source_rgb(cr, 1, 1, 1);
cairo_paint(cr); //background

cairo_rectangle(cr, 50, 50, 150, 150);
cairo_set_source_rgb(cr, 0, 0, 1);
cairo_fill(cr); //first rect
cairo_set_operator(cr,CAIRO_OPERATOR_CLEAR);
cairo_arc(cr, 100, 100, 100, 0, M_PI * 2);
cairo_fill(cr); //circle that show remove a part of the rect
}

结果如下图:

enter image description here

根据documentation我原以为根本没有黑色,并且圆圈下方的蓝色矩形的所有部分都将被删除(因此背景为白色)。

我是不是误会接线员了?我做错了吗?

最佳答案

cairo 怎么知道你认为背景是什么?

您链接到的文档提到 alpha channel 和所有颜色 channel 都设置为 0。这是完全透明的黑色。

文档中的示例是带有 alpha channel 的图像,因此清除的部分变得透明。

您正在使用没有 alpha channel 的图像,因此清除的部分变成黑色。

关于c++ - CAIRO_OPERATOR_CLEAR 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23537667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com