关于如何绘制形状并用颜色填充它们(例如透明背景上的红色光盘)我遵循了this gtkmm tutorial。从这个例子中,我也能够在蓝色背景上得到另一个带红色光盘的例子。
然而,我真正需要的是一张透明光盘,背景为蓝色,填充所有减去光盘区域,这应保持透明。
因此,使用cairo,通常的工作流程是:
我需要一些能够实现这样的工作流程:
我已在网上对此进行了一些研究,但所有例子似乎都假设我们想要填充形状的内部区域(我必须承认它更典型)。
我怎么能这样做?
P.S。我添加了C标签,因为我不介意你喜欢使用C(甚至是Python)。
答案 0 :(得分:2)
绘制圆圈并绘制一个包含所有可见区域的矩形。将cairo填充规则设置为偶数/奇数。填。完成。
cairo_save(cr); // Save the state
cairo_arc(cr, 42, 42, 21, 0, 2*M_PI); // Draw circle
cairo_rectangle(cr, 0, 0, width, height); // Rectangle containing everything
cairo_set_fill_rule(cr, CAIRO_FILL_RULE_EVEN_ODD);
cairo_fill(cr);
cairo_restore(cr); // Restore default fill rule (optional; pairs with save above)