我正在使用 Cairo 编写一个程序,我需要使用以下代码将坐标从屏幕更改为笛卡尔坐标:
cairo_translate( cr, x, height );
cairo_scale( cr, 1.0, -1.0 ); // FLIP the Y axis
但是当我尝试渲染文本(cairo_show_text)时,文本也会被反转,因此不可读。
使用缩放字体 (cairo_scaled_font_t) 时也会发生同样的情况:
cairo_font_options_t *font_options;
cairo_matrix_t ctm, font_matrix;
cairo_scaled_font_t *scaled_font;
font_options = cairo_font_options_create();
cairo_get_matrix( cr, &ctm );
cairo_get_font_matrix( cr, &font_matrix );
font_matrix.xx = font_matrix.yy = 20.0; // font size
// font_face initialized elsewhere and is valid
scaled_font = cairo_scaled_font_create( font_face, &font_matrix, &ctm, font_options );
cairo_set_scaled_font( cr, scaled_font );
cairo_move_to( cr, 1, 50 );
cairo_show_text( cr, "some text" );
...
我认为矩阵需要一些调整,但我不知道如何。任何帮助表示赞赏。提前致谢。
编辑:
文字是颠倒的。例如,“L”看起来像 Gamma,“W”看起来像“M”。