c++ - 开罗表面的文本旋转

标签 c++ c linux graphics cairo

我需要使用 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);

enter image description here

最佳答案

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

回答这个问题,如果您需要将文本旋转某个角度,您需要首先使用给定的公式找到等效的弧度。

α(radians) = α(degrees) × π / 180°

关于c++ - 开罗表面的文本旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48808893/

相关文章:

linux - 一个驱动控制两个网卡

regex - 如何重命名文件夹中的所有文件,在 Linux 中删除空格字符后的所有内容?

c++ - 多次读取txt

c++ - 有没有办法突破 boost::mpl for_each?

c - 初学者级。在 C 中编码。遇到 "if else"问题。

c - 对C的定时器有一些困惑

linux - 如何找到给定地址的 ptep?

c++ - LockFileEx 读写升级/降级

c# - C++ 到 C# 包装器空异常错误

objective-c - Objective-C 代码可以调用 C 代码吗?反之亦然? (混合搭配它们)