2010-12-10 6 views
2

回転したマトリックスの下でPangoレンダリングに問題があります。私はアニメーションカイロ行列の回転の内部で発生するラベル(下のコードを参照)を描こうとしています。Cairoでテキストを回転させると、Pangoのフォントが変化するのはなぜですか?

ラベルが回転するにつれて、テキストはジグザグの角度で最も大きくなり、重さが減り、直交する角度で最も薄くなるように見えます。この比較を参照してください。

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

それだけでシェイプパスを回転させて、角度に基づいてテキストの外観を変更しようとしていなかったかのように私が生成するために回転されたテキストをしたいと思います。どのように私はこれを行うことができるの任意のアイデア?

おかげで、私だけではないC、PythonのでカイロとはPangoを使用することができますが、私の最初の推測がANTIALIASをいじくり回すことであろう ショーン


     //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); 

答えて

0

:この(

pCr.set_antialias(cairo.ANTIALIAS_DEFAULT)

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

cairo.ANTIALIAS_SUBPIXELまたはcairo.ANTIALIAS_NONEを試して、ther eは違いです。

また、コード内でローテーションを見つけることができませんでしたが、レンダリングした後、ローテーションを最初に実行してから、テキスト(ベクターパス)をレンダリング(ピクセル化)する必要があります。

希望します。