cairo表面中的文本旋转

时间:2018-02-15 13:51:43

标签: c++ c linux graphics cairo

我需要使用cairo在垂直方向绘制一些文本。使用下面的代码我无法达到所需的角度,换句话说,我无法弄清楚cairo_rotate(cr,angle)是什么;接口期望角度参数。示例代码和输出如下所示。

cairo_surface_t *surface;
cairo_t *cr;

surface = cairo_image_surface_create(CAIRO_FORMAT_A1, 400, 400);
cr = cairo_create(surface);

cairo_set_source_rgb(cr, 0, 0, 0);
cairo_select_font_face(cr, "Sans", CAIRO_FONT_SLANT_NORMAL,
                       CAIRO_FONT_WEIGHT_NORMAL);
cairo_set_font_size(cr, 40.0);


cairo_move_to(cr, 100, 50.0);
cairo_rotate(cr, 90);

cairo_show_text(cr, "Sample Text");

cairo_surface_write_to_png(surface, "image.png");

cairo_destroy(cr);
cairo_surface_destroy(surface);

enter image description here

1 个答案:

答案 0 :(得分:1)

正如@Scheff在评论中指出的那样,void cairo_rotate (cairo_t *cr,double angle);需要弧度,而不是角度。如果您不关注文档,很容易从参数名称中误导。

得出答案,如果你需要以某个角度旋转文本,你需要先使用给定的公式找到等效的弧度。

  

α(弧度)=α(度)×π/ 180°