我需要使用 cairo 在垂直方向绘制一些文本。使用以下代码,我无法达到所需的角度,或者换句话说,我无法弄清楚 cairo_rotate(cr, angle);接口(interface)需要角度参数。下面给出了示例代码和输出。
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);
最佳答案
正如@Scheff 在评论中指出的那样,void cairo_rotate (cairo_t *cr,double angle);
需要弧度,而不是角度。如果您不关注文档,很容易被参数名称误导。
回答这个问题,如果您需要将文本旋转某个角度,您需要首先使用给定的公式找到等效的弧度。
α(radians) = α(degrees) × π / 180°
关于c++ - 开罗表面的文本旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48808893/