使用OpenVG旋转文本

时间:2011-02-16 15:31:12

标签: openvg

我注意到文本渲染例程完全忽略了OpenVG转换矩阵,我无法使用VG_GLYPH_ORIGIN parameter手动控制文本位置。

我正在实施一个场景图。我发现我可以使用vgGetMatrix,读取当前3x3变换矩阵的组件6和7,并在绘制文本块之前将VG_GLYPH_ORIGIN设置为这些值。这允许将文本原点放置在正确的位置,但文本仍然始终从左向右显示。

然而,这本身并不能让我做任何其他的转换,比如旋转。我很惊讶因为文本是由VGPath组成的,而且它们确实被转换了

有没有办法让文字随OpenVG 1.1一起旋转?或者我应该忽略OpenVG 1.1中的文本功能并手动将字母绘制为单独的路径或图像?

1 个答案:

答案 0 :(得分:1)

所有绘图函数都使用不同的用户 - >曲面矩阵:

  • vgDrawPath使用VG_MATRIX_PATH_USER_TO_SURFACE
  • vgDrawImage使用VG_MATRIX_IMAGE_USER_TO_SURFACE
  • vgDrawGlyph / vgDrawGlyphs使用VG_MATRIX_GLYPH_USER_TO_SURFACE

默认情况下,所有矩阵函数(vgTranslatevgRotatevgLoadMatrix等)都在VG_MATRIX_PATH_USER_TO_SURFACE上运行。要更改活动矩阵,请使用vgSeti作为第一个参数调用VG_MATRIX_MODE

vgSeti(VG_MATRIX_MODE, VG_MATRIX_GLYPH_USER_TO_SURFACE);
/* now vgTranslate, vgRotate, etc will operate on VG_MATRIX_GLYPH_USER_TO_SURFACE */