public void PaintSurface(SkiaManager skiaManager, SKCanvas canvas) { (Vector2 Min, Vector2 Max) = RectTransform.Rect; float radius = ((CircleArea)StartRegion).Radius; SKPoint pos = ((CircleArea)StartRegion).Position.ToSKPoint(); canvas.DrawCircle(skiaManager.SketchSpaceToCanvasSpaceMatrix.MapPoint(pos), skiaManager.SketchSpaceToCanvasSpaceMatrix.MapRadius(radius), IdlePaint); canvas.DrawCircle(skiaManager.SketchSpaceToCanvasSpaceMatrix.MapPoint(pos), skiaManager.SketchSpaceToCanvasSpaceMatrix.MapRadius(MaxLength), MaxLengthAreaPaint); if (Pressed) { var endPos = (((CircleArea)StartRegion).Position + Delta).ToSKPoint(); canvas.DrawLine(skiaManager.SketchSpaceToCanvasSpaceMatrix.MapPoint(pos), skiaManager.SketchSpaceToCanvasSpaceMatrix.MapPoint(endPos), LinePaint); var pointer = OnSketchPointer; SKPoint pointerPoint = skiaManager.SketchSpaceToCanvasSpaceMatrix.MapPoint(new SKPoint(pointer.Point.X, pointer.Point.Y)); StringBuilder sb = new StringBuilder(); sb.AppendLine("POINTER INFO:"); foreach (var area in AreaList.ToArray()) { if (area.Status == AreaStatus.Pressed) { sb.Append(area.AreaIdentifier + ", "); } } canvas.DrawText(sb.ToString(), pointerPoint, _BoardFontPaint); } }