如何在开罗重设当前点?

问题描述

从cairo文档中,我可以看到某些功能(例如,文本toy-API cairo_show_text())需要设置当前点。 我们可以使用cairo_move_to()设置当前点,然后调用cairo_show_text()它将光栅化所需位置的文本。

顺便说一句,这引起了一个错误,因为在光栅化文本之后,我正在抚摸一条路径(该路径(使用对cairo_move_to()的初始调用来设置文本的当前点)具有错误的点。

我通过在调用cairo_stroke()之后立即调用cairo_show_text()解决了该错误,由于它可以重置当前点,因此似乎可以正常工作。

似乎调用cairo_close_path()而不是cairo_stroke()并没有帮助。它没有重置当前点。我认为这很奇怪。为什么?

我的最后一个问题是:是否有适当的方法来重置当前点?我认为应该有。

解决方法

来自https://www.cairographics.org/manual/cairo-Paths.html#cairo-new-path

cairo_new_path()

清除当前路径。通话后将没有路径,也没有当前点。

出于完整性考虑:还有此功能不能清除当前路径:

来自https://www.cairographics.org/manual/cairo-Paths.html#cairo-new-sub-path

cairo_new_sub_path()

开始一个新的子路径。请注意,现有路径不会受到影响。通话之后将没有当前点。

在许多情况下,此调用是不需要的,因为新的子路径通常以cairo_move_to()开始。

使用cairo_new_sub_path()调用之一开始新的子路径时,对cairo_arc()的调用特别有用。这使事情变得更容易,因为不再需要为调用cairo_move_to()手动计算弧的初始坐标。