Поворот текста на поверхности Каира

Мне нужно нарисовать текст в вертикальном направлении, используя Каир. С помощью следующего кода я не могу достичь требуемого угла, или Другими словами, я не могу понять, что такое 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);

введите описание изображения здесь

1 ответ

Как отметил @Scheff в комментарии, void cairo_rotate (cairo_t *cr,double angle); ожидает радианы, а не угол. Его легко ввести в заблуждение от имени параметра, если вы не сосредоточены на документации.

Переходя к ответу: если вам нужно повернуть текст на некоторый угол, вам нужно сначала найти эквивалентные радианы, используя данную формулу.

α (радианы) = α(градусы) × π / 180°

Другие вопросы по тегам