5

文字列を表す Path オブジェクトを取得する方法が見つかりません。それは存在しますか?必要なポイントのリストで十分ですが、内部ではパスが使用されていると思います。

たとえば、GDI+ には次のようなものがあります。

GraphicsPath p = new GraphicsPath(); 
p.AddString("string");

そこから、「描画された文字列」の任意のポイントにアクセスして変更できます。

PS: パスに沿ってテキストを描画するという意味ではありません。

4

1 に答える 1

9

私はこの問題の解決 (OpenGL でベクトル化されたテキストを描画するため) にかなりの時間を費やし、libSkia のソースを深く掘り下げる必要がありました。そして、それは非常に単純であることがわかりました:

実際、canvas は内部でパスを使用し、SkPaint のgetTextPath()メソッドを使用してテキストをベクトル パスに変換します。幸いなことに、パブリック API の Java 側で として公開されていますandroid.graphics.Paint.getTextPath()。その後、 Path を で読み返すことができますandroid.graphics.PathMeasure

残念ながら、正確な描画コマンドを読み取ることはできませんが、二分法などを使用して曲線をかなり厳密にサンプリングできます。

于 2013-03-12T22:53:15.307 に答える