2016-09-14 9 views
0

私はNGraphicsを使用しており、滑らかな曲線を生成したいと思います。CurveToとContinueCurveToが正しく描画されない

Androidデバイスは、以下のコードを使用している場合のiPhoneとは異なる結果を示しています。

アスタリスク(*)で囲まれた行は、Android(Samsung Galaxy S4でテスト済み)で使用されている場合、カーブが期待通りに見えます。しかし、iPhoneでは正しく表示されません。

iPhone iPhone Screenshot

アンドロイド、私はまた、すべてずに少量のサンプルでこれを再現しようとした Android Screenshot

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とすると、同じ結果が得られる。

答えて

0

答えを見つけた...ちょうど私が現在のポイントと前のポイントを渡して中間ポイントを取得しなければならないことが分かった。

関連する問題