清除开罗的当前路径
Clear the current path in 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 翻译查看了 Cairo::Context
的文档,但我找不到它。 (文档是日文的!)
如何手动清除 Cairo 上下文的当前路径?
我查看了 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
在某些使用 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 翻译查看了 Cairo::Context
的文档,但我找不到它。 (文档是日文的!)
如何手动清除 Cairo 上下文的当前路径?
我查看了 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