2

回転行列の下でのPangoレンダリングに問題があります。アニメーション化するカイロ行列の回転の内部で発生するラベル(以下のコードを参照)を描画しようとしています。

ラベルが回転すると、テキストが揺れ、重量が増減し、対角線の角度で最も厚くなり、直交する角度で最も薄くなります。この比較を参照してください。

http://www5.picturepush.com/photo/a/4666818/640/Anonymous/pango-rotation.jpg

回転したテキストを、角度に基づいてテキストの外観を変更しようとせずに、形状パスを回転させているかのように生成したいと思います。これをどのように行うことができるかについてのアイデアはありますか?

ありがとう、ショーン


        //Draw text with Pango
        PangoLayout *layout;
        PangoFontDescription *desc;

        // pCr is the cairomm context ptr.
        // pCr->cobj() is the underlying C Cairo context ptr.
        pCr->set_source_rgb(0.0, 0.0, 1.0);

        layout = pango_cairo_create_layout(pCr->cobj());
        // text is the label string
        pango_layout_set_text(layout, text.c_str(), -1);

        desc = pango_font_description_from_string("Sans Bold 12");
        pango_layout_set_font_description(layout, desc);

        pango_cairo_layout_path(pCr->cobj(), layout);
        pCr->fill();

        pango_font_description_free(desc);
        g_object_unref(layout);
4

1 に答える 1

0

私はCではなくPythonでCairoとPangoのみを使用できますが、最初の推測はANTIALIASをいじくり回すことです。

pCr.set_antialias(cairo.ANTIALIAS_DEFAULT)

(これはPythonの構文であり、Cではありません)

違いがあるかどうか試してみるcairo.ANTIALIAS_SUBPIXELか、確認することができます。cairo.ANTIALIAS_NONE

また、コードに回転が見つかりませんでしたが、レンダリング後にテキストを回転している可能性があります。最初に回転を実行してから、テキスト(ベクトルパス)をレンダリング(ピクセル化)する必要があります。

それが役に立てば幸い。

于 2011-08-16T19:08:09.643 に答える