我使用了fingerpaint演示并修改它以进行多点触控。这部分都很好,路径按预期绘制。现在,我需要将这些路径存储到ArrayList中,所以当我在viewpager中滑动每个View时,我可以保持状态并重新绘制存储在内存中的那些路径。
这是我绘制画布的代码。
protected override void OnDraw (Canvas canvas)
{
base.OnDraw (canvas);
canvas.DrawBitmap (mBitmap, 0, 0, mBitmapPaint);
if (Strokes != null && Strokes.Count > 0)
{
for (int i = 0; i < Strokes.Count; i++) {
var path = (Path) Strokes[i].Path;
canvas.DrawPath (path, Strokes[i].Pen);
}
}
}
我通过Stroke List的部分:
viewPagerAdapter.InitializedView += (object sender, PreviewPagerViewEventArgs e) => {
if (mPageData.Count <= e.Position)
mPageData.Add (e.Data);
else {
var view = (DrawableView) GetVisibleView (e.Position);
view.Background = new ColorDrawable(Android.Graphics.Color.Blue);
view.Strokes = (List<StrokeData>) mPageData [e.Position];
view.Invalidate();
}
};
我放置了一个子弹点,canvas.DrawPath确实通过但画布仍然没有被绘制