1

Gtk.Pangoを使用して、二重行間隔でテキストを表示するClutter.Text が必要です。

注 : CSS では、使用するline-height: 200%と思います。

このコードを試しましたが、うまくいきませんでした:

var text_actor  = new Clutter.Text.with_text ("Roboto 10", "Long long text") ;
text_actor.width= SIDE_PANE_WIDTH ;
text_actor.get_layout ().set_spacing (2*Pango.SCALE) ;

どうやら、Pango.LayoutClutter.Textのキャッシュされたバージョンを保持します。

これを達成する方法はありますか?

4

2 に答える 2

3

はい、インスタンスをClutterTextキャッシュしてPangoLayout、優先サイズを取得する必要があるたびにテキストを再測定する必要がないようにします。PangoLayoutwidth-for-height/height-for-width ジオメトリ リクエストにより、実際には の最新の 3 つのインスタンスをキャッシュしますが、これは単なる実装の詳細です。

PangoLayoutのインスタンスのプロパティを変更してClutterTextも、 は更新されません。後でClutterText呼び出す必要があります。これは、 がシーン グラフのアクターよりも低いレベルにあるためです。clutter_actor_queue_redraw()PangoLayout

一般に、アクターは、それが作成ClutterTextする を微調整することを許可しません。PangoLayoutアクターがレイアウトの変更の作成を担当し、パフォーマンスの低下または未定義の動作をもたらすオーバーライドを試みることが期待されます。

行間プロパティを導入したい場合は、ClutterTextに対してバグを報告する必要があります。ただし、Clutter の次の安定版リリースを 9 月まで待たなければならないことになります。

すべてを必要とせずClutterText、テキストを表示したいだけの場合は、オーバーライドされた、、および仮想関数内で測定できるをサブクラス化しClutterActorて使用clutter_actor_create_pango_layout()し、オーバーライドされた仮想関数内でペイントできます。PangoLayoutget_preferred_width()get_preferred_height()allocate()paint()

于 2015-04-06T11:06:17.700 に答える