stroke() または fill() の呼び出し後にパスをコピーするにはどうすればよいですか? そのようなキャッシングメカニズムをセットアップしました
ハイエンド ビジュアル オブジェクト クラス:
override void DrawDirect(canvas aCanvas)
{
aCanvas.Line(...)
aCanvas.Rectangle(...)
// etc.
MyCache = aCanvas.GetPath(); // = canvas.Context.copy_Path()
IsCached = true;
}
override void DrawCache(canvas aCanvas)
{
aCanvas.DrawPath(MyCache); // = canvas.Context.appendPath...
}
スーパークラスには次のメソッドがあります。
voidDraw(canvas aCanvas)
{
if(IsCached) DrawCache();
else DrawDirect;
}
キャンバスはこの種のメソッドを定義します:
void Line(...)
{
Context.moveTo(...)
Context.lineTo(...)
Context.stroke();
}
GetPath を呼び出すと、stroke() と fill() の呼び出しをコメントしない限り、MyCache.numData は 0 になります。しかし、副作用として、DrawDirect メソッドは (視覚的に) 何もしません。
それに続くもう 1 つの質問は、次のとおりです。appendPath の呼び出しは、基本的な「直接」メソッドの呼び出しよりも (本当に) 高速ですか? (これについてコメントすることができます。copy_Path に関する回答のみを受け付けます)。