0
我正在使用NGraphics,我想生成一條平滑的曲線。CurveTo和ContinueCurve不能正確繪圖
與使用下面的代碼時的iPhone相比,Android設備顯示的結果不同。
如果在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
,這產生相同的結果。