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; }
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 } }; }