Xamarin Forms: Нарисуйте точки с Skiasharp после получения координат от Центра сообщений

Я занимаюсь разработкой приложения Xamarin Forms (страница с вкладками), которое должно рисовать точки на графике после получения их координат через Bluetooth.

Логика связи Bluetooth реализована в части проекта Android OS, в то время как весь пользовательский интерфейс был разработан в кроссплатформенной части.

До сих пор мне удалось распечатать значения координат на одной из страниц после отправки и получения их с помощью Messaging Center.

Тем не менее, когда я пытаюсь отправить координаты на вкладку, в которой точки должны быть нанесены с помощью SkiaSharp, кажется, что ничего не получено от Messaging Center.

Вот что я пытаюсь сделать:

namespace TestBth
{
    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class LissajousPage : ContentPage
    {

    SKPaint PointPaint = new SKPaint
    {

        Style = SKPaintStyle.Stroke,
        Color = Color.Yellow.ToSKColor(),
        StrokeWidth = 1,
        IsAntialias = true

    };

    public LissajousPage()
    {
        InitializeComponent();

        Device.StartTimer(TimeSpan.FromMilliseconds(100), () =>
        {                                           

            canvasView.InvalidateSurface();

            return true;

        });
    }


    private void OnCanvasViewPaintSurface(object sendr, SKPaintSurfaceEventArgs e)
    {
        SKImageInfo info = e.Info;
        SKSurface surface = e.Surface;
        SKCanvas canvas = surface.Canvas;


        int width = e.Info.Width;
        int height = e.Info.Height;


        //Set transforms
        canvas.Translate(width / 2, height / 2);
        canvas.Scale(width / 200f);

        //Drawings  

        canvas.Clear();

        byte[] coord = new byte[200];

        MessagingCenter.Subscribe<App, byte[]>((App)Application.Current, "Points", (sender, arg) =>
        {
            MessagingCenter.Unsubscribe<App, byte[]>((App)Application.Current, "Points");

            coord = arg;

        });                       

        for (int i = 0; i == 199; i++)
        {                
            canvas.DrawPoint(coord[i], coord[i+1], PointPaint);
        }


    }

}
}

И это оператор SEND в части Android, который выполняется после получения некоторых координат через Bluetooth:

Xamarin.Forms.MessagingCenter.Send<App, byte[]>((App)Xamarin.Forms.Application.Current, "Points", points);

Я также пытался отправить и получить простое логическое значение, но на этой странице это тоже не работает.

Какие-либо предложения?

Заранее спасибо.

С уважением.

0 ответов

Другие вопросы по тегам