Пример #1
0
        public MainPage()
        {
            const float y            = 40;
            const float canvasInvert = -1;

            InitializeComponent();
            var canvas  = new global::SkiaSharp.Views.Forms.SKCanvasView();
            var painter = new SkiaSharp.MathPainter {
                LaTeX = @"999999"
            };

            canvas.PaintSurface += (sender, e) => {
                var c = e.Surface.Canvas;
                c.Scale(10, 10);
                painter.Draw(c, 0, y);
                for (int i = 0; i < painter.Display.To <Display.ListDisplay <Fonts, Glyph> >().Displays[0].To <Display.TextLineDisplay <Fonts, Glyph> >().Runs[0].Run.Length; i++)
                {
                    if (painter.Display.PointForIndex(TypesettingContext.Instance, MathListIndex.Level0Index(i)) is System.Drawing.PointF p)
                    {
                        c.DrawCircle(p.X, canvasInvert * p.Y, 1, new global::SkiaSharp.SKPaint {
                            Color = global::SkiaSharp.SKColors.Red
                        });
                    }
                    else
                    {
                        System.Diagnostics.Debugger.Break();
                    }
                }
            };
            Content = canvas;
        }
Пример #2
0
        public EditorPage()
        {
            InitializeComponent();
            var view = new global::SkiaSharp.Views.Forms.SKCanvasView {
                WidthRequest = 320, HeightRequest = 225
            };
            var painter = new SkiaSharp.MathPainter {
                TextColor = global::SkiaSharp.SKColors.Black
            };
            var keyboard = new MathKeyboard();

            keyboard.RedrawRequested += (_, __) => view.InvalidateSurface();
            view.PaintSurface        +=
                (sender, e) => {
                e.Surface.Canvas.Clear();
                SkiaSharp.MathPainter.DrawDisplay(painter, keyboard.Display, e.Surface.Canvas);
                keyboard.DrawCaret(e.Surface.Canvas, Rendering.CaretShape.UpArrow);
            };
            Content = new StackLayout {
                Children = { view, keyboard }
            };
        }