在一些使用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上下文的当前路径?
答案 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