0

次のコードを使用して、座標を画面からデカルトに変更する必要がある 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」はガンマのように見え、「W」は「M」のように見えます。

4

3 に答える 3

0

座標系を上下反転させるため、テキストも上下反転して表示されます。この問題の解決策は、垂直スケールの負のエントリを持つフォント マトリックスを設定して、テキストを手動で反転することです。これを行うには、次のようにフォント サイズを設定するコードを変更します。

double font_size = 20.0;
font_matrix.xx = font_size;
font_matrix.yy = -font_size; // negative size to vertically flip text
于 2014-08-11T14:52:18.430 に答える
0

Y 軸を反転しているため、テキストも反転します。これを試して:

cairo_save(cr);
cairo_reset_clip(cr);
cairo_show_text(cr, "Some Text");
cairo_restore(cr);

上記は、例の cairo_show_text() 呼び出しを置き換えます。

于 2013-03-28T12:20:15.720 に答える