我需要使用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);
答案 0 :(得分:1)
正如@Scheff在评论中指出的那样,void cairo_rotate (cairo_t *cr,double angle);
需要弧度,而不是角度。如果您不关注文档,很容易从参数名称中误导。
得出答案,如果你需要以某个角度旋转文本,你需要先使用给定的公式找到等效的弧度。
α(弧度)=α(度)×π/ 180°