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