清除开罗的当前路径

时间:2018-12-24 09:32:45

标签: ruby gtk3 cairo

在一些使用Cairo的Ruby代码中,我需要在一条路径上绘制许多填充。这是图形应用程序的一部分,其中可以使用不同的混合模式将多个填充物彼此堆叠。

使用fill_preserve绘制每个填充以保留路径,以便下一个填充可以在同一路径上进行而无需追溯。这样做有点像这样:

rectangle_data.each do |rectangle_datum|
    context.rectangle(*rectangle_datum.rectangle)
    fill_data.each do |fill_datum|
        context.set_source_rgba(*fill_datum.color)
        context.fill_preserve
    end
end

问题在于,即使在所有填充都发生之后,这仍会留下路径,这意味着将单个形状绘制为一个巨大的填充形状。

要解决此问题,我只需要手动清除当前路径即可,但是我不知道该怎么做。我已经通过Google Translate浏览了Cairo::Context的文档,但找不到。 (文档为日语!)

如何手动清除Cairo上下文的当前路径?

1 个答案:

答案 0 :(得分:1)

我查看了Cairo::Context#methods,发现了#new_path,它正是我所追求的。因此,您可以这样做:

rectangle_data.each do |rectangle_datum|
    context.rectangle(*rectangle_datum.rectangle)
    fill_data.each do |fill_datum|
        context.set_source_rgba(*fill_datum.color)
        context.fill_preserve
    end
    context.new_path
end