如何在调用 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 时,MyCache.numData 等于 0,除非我注释对 stroke() 和 fill() 的调用。但作为副作用,DrawDirect 方法(在视觉上)什么也不做。
另一个后续问题是:调用 appendPath (真的)比调用基本的“直接”方法更快吗?(您可以对此发表评论,我只会接受有关 copy_Path 内容的答案)。