0
私はNGraphicsを使用しており、滑らかな曲線を生成したいと思います。CurveToとContinueCurveToが正しく描画されない
Androidデバイスは、以下のコードを使用している場合のiPhoneとは異なる結果を示しています。
アスタリスク(*)で囲まれた行は、Android(Samsung Galaxy S4でテスト済み)で使用されている場合、カーブが期待通りに見えます。しかし、iPhoneでは正しく表示されません。
アンドロイド、私はまた、すべてずに少量のサンプルでこれを再現しようとした
:
private bool DrawingMove(TouchData touchData)
{
if (touchData == null)
{
Invalidate();
return true;
}
foreach (var stroke in _localStroke)
{
if (stroke.Pointer == touchData.PointerId)
{
var newPoint = ConvertLocalToGlobal(touchData.Point);
var point = new PointModel();
point.X = newPoint.X;
point.Y = newPoint.Y;
stroke.Points.Add(point);
var length = stroke.Points.Count - 1;
if (stroke.Points.Count >= 3)
{
var p1 = ConvertGlobalToLocal(
new Point(stroke.Points[length - 2].X,
stroke.Points[length - 2].Y));
var p2 = ConvertGlobalToLocal(
new Point(stroke.Points[length - 1].X,
stroke.Points[length - 1].Y));
var p3 = ConvertGlobalToLocal(
new Point(stroke.Points[length].X,
stroke.Points[length].Y));
if (stroke.Points.Count == 3)
{
stroke.Path.MoveTo(p1);
stroke.Path.CurveTo(p1, p2, p3);
}
else if (stroke.Points.Count > 3)
{
**stroke.Path.LineTo(p2);**
stroke.Path.ContinueCurveTo(p2, p3);
Console.WriteLine("Path.ContinueCurveTo(new Point(" + p2.X + "," + p2.Y + "),new Point(" + p3.X + "," + p3.Y + "));");
}
}
break;
}
}
return base.TouchesMoved(touchData);
}
上記のコードは次のような結果を生成し、上記のタッチ描画コードは、単純にpassinによってgの座標をCurveTo
,ContinueCurveTo
とすると、同じ結果が得られる。