Получение подписи из Point-Array - PullRequest
0 голосов
/ 03 сентября 2018

Я пытаюсь получить точки SignaturePad для повторного отображения подписи.

public static void GetPoints(string airid, SignaturePadView padView)
{
        List<Strokes> DBStrokes = SqLiteHelper.conn.Query<Strokes>("select * from Strokes where airid = ? order by PointSequence", airid);

        List<Point> points = new List<Point>();

        foreach (Strokes stroke in DBStrokes)
            points.Add(new Point { X = stroke.pointx, Y = stroke.pointy });

        padView.Points = points.AsEnumerable();
}

Точки массива заполнены правильно, но padView.Points отображается как результат {Xamarin.Forms.Point [0]}.

1 Ответ

0 голосов
/ 04 сентября 2018

Я нашел проблему. Кажется, что установить свойство Points можно только тогда, когда Signaturepad виден. поэтому мой новый код выглядит так:

            List<Strokes> DBStrokes = SqLiteHelper.conn.Query<Strokes>("select * from Strokes where airid = ? order by PointSequence", formField.pictFile);

            Xamarin.Forms.Point[] points = new Point[DBStrokes.Count];

            for (int i = 0; i < DBStrokes.Count; i++)
                points[i] = new Point(DBStrokes[i].pointx, DBStrokes[i].pointy);

            var originalPoints = JsonConvert.SerializeObject(points);

            Xamarin.Forms.Point[] points4View = JsonConvert.DeserializeObject<Xamarin.Forms.Point[]>(originalPoints);

            signatureView.Points = points4View; 

Теперь я использую событие Handle_MeasureInvalidated - Event для запуска этого кода.

...