private void RenderLeft(SKCanvas canvas, Axes axes) { SKPaint paintTick = new SKPaint() { IsAntialias = true, TextSize = 12, TextAlign = SKTextAlign.Right, Color = SKColor.Parse("#FF000000") }; SKPaint paintGrid = new SKPaint() { IsAntialias = true, Color = SKColor.Parse("#33000000") }; SKRect dataRect = axes.GetDataRect(); foreach (Tick tick in ticks) { if ((tick.value >= axes.y.low) && (tick.value <= axes.y.high)) { float yPixel = axes.GetPixel(0, tick.value).Y; SKPoint dataLeft = new SKPoint(dataRect.Left, yPixel); SKPoint dataRight = new SKPoint(dataRect.Right, yPixel); SKPoint tickLeft = new SKPoint(dataRect.Left - length, yPixel); canvas.DrawLine(tickLeft, dataLeft, paintTick); canvas.DrawText(tick.label, tickLeft.X - 3, yPixel + paintTick.TextSize * 0.35f, paintTick); canvas.DrawLine(dataLeft, dataRight, paintGrid); } } }
private void RenderLeft(SKCanvas canvas, Axes axes) { var yTickPaint = new SKPaint() { IsAntialias = true, TextSize = 12, TextAlign = SKTextAlign.Right, Color = yTickColor }; var gridPaint = new SKPaint() { IsAntialias = true, Color = gridColor }; SKRect dataRect = axes.GetDataRect(); foreach (Tick tick in ticks) { if ((tick.value >= axes.y.low) && (tick.value <= axes.y.high)) { float yPixel = axes.GetPixel(0, tick.value).Y; SKPoint dataLeft = new SKPoint(dataRect.Left, yPixel); SKPoint dataRight = new SKPoint(dataRect.Right, yPixel); SKPoint tickLeft = new SKPoint(dataRect.Left - length, yPixel); canvas.DrawLine(tickLeft, dataLeft, yTickPaint); canvas.DrawText(tick.label, tickLeft.X - 3, yPixel + yTickPaint.TextSize * 0.35f, yTickPaint); canvas.DrawLine(dataLeft, dataRight, gridPaint); } } }
private void RenderBottom(SKCanvas canvas, Axes axes) { SKPaint paintTick = new SKPaint() { IsAntialias = true, TextSize = 12, TextAlign = SKTextAlign.Center, Color = SKColor.Parse("#FF000000") }; SKPaint paintGrid = new SKPaint() { IsAntialias = true, Color = SKColor.Parse("#33000000") }; SKRect dataRect = axes.GetDataRect(); foreach (Tick tick in ticks) { if ((tick.value >= axes.x.low) && (tick.value <= axes.x.high)) { float xPixel = axes.GetPixel(tick.value, 0).X; SKPoint dataTop = new SKPoint(xPixel, dataRect.Top); SKPoint dataBot = new SKPoint(xPixel, dataRect.Bottom); SKPoint tickBot = new SKPoint(xPixel, dataRect.Bottom + length); canvas.DrawLine(dataBot, tickBot, paintTick); canvas.DrawText(tick.label, xPixel, tickBot.Y + paintTick.TextSize, paintTick); canvas.DrawLine(dataBot, dataTop, paintGrid); } } }
private void RenderBottom(SKCanvas canvas, Axes axes) { var xTickPaint = new SKPaint() { IsAntialias = true, TextSize = 12, TextAlign = SKTextAlign.Center, Color = xTickColor }; var gridPaint = new SKPaint() { IsAntialias = true, Color = gridColor }; SKRect dataRect = axes.GetDataRect(); foreach (Tick tick in ticks) { if ((tick.value >= axes.x.low) && (tick.value <= axes.x.high)) { float xPixel = axes.GetPixel(tick.value, 0).X; SKPoint dataTop = new SKPoint(xPixel, dataRect.Top); SKPoint dataBot = new SKPoint(xPixel, dataRect.Bottom); SKPoint tickBot = new SKPoint(xPixel, dataRect.Bottom + length); canvas.DrawLine(dataBot, tickBot, xTickPaint); canvas.DrawText(tick.label, xPixel, tickBot.Y + xTickPaint.TextSize, xTickPaint); canvas.DrawLine(dataBot, dataTop, gridPaint); } } }
public void Render(SKCanvas canvas, SKRect plotRect) { // update plot-level layout with the latest plot dimensions layout.Update(plotRect); if (!axes.x.isValid || !axes.y.isValid) { AutoAxis(); } axes.SetDataRect(layout.dataRect); axes2.SetDataRect(layout.dataRect); // draw the graphics yTicks.Generate(axes.y.low, axes.y.high, layout.dataRect); y2Ticks.Generate(axes2.y.low, axes2.y.high, layout.dataRect); xTicks.Generate(axes.x.low, axes.x.high, layout.dataRect); if (yTicks.biggestTickLabelSize.Width > layout.yScaleWidth) { Debug.WriteLine("increasing Y scale width to prevent overlapping with label Y label"); layout.yScaleWidth = yTicks.biggestTickLabelSize.Width; layout.Update(plotRect); } var fillPaint = new SKPaint(); fillPaint.Color = SKColor.Parse("#FFFFFF"); //fillPaint.Color = Tools.RandomColor(); // useful for assessing when plots are redrawn canvas.DrawRect(layout.dataRect, fillPaint); yTicks.Render(canvas, axes); y2Ticks.Render(canvas, axes2); xTicks.Render(canvas, axes); canvas.Save(); canvas.ClipRect(axes.GetDataRect()); foreach (var primaryPlottable in GetPlottableList(false)) { primaryPlottable.Render(canvas, axes); } foreach (var secondaryPlottable in GetPlottableList(true)) { secondaryPlottable.Render(canvas, axes2); } canvas.Restore(); //RenderLayoutDebug(canvas); RenderLabels(canvas); }
private void DrawPlottables(SKCanvas canvas) { canvas.Save(); canvas.ClipRect(axes.GetDataRect()); foreach (var primaryPlottable in GetPlottablesByAxis(false)) { primaryPlottable.Render(canvas, axes); } foreach (var secondaryPlottable in GetPlottablesByAxis(true)) { secondaryPlottable.Render(canvas, axes2); } canvas.Restore(); }
private void RenderLeft(Graphics gfx, Axes axes) { RectangleF dataRect = axes.GetDataRect(); StringFormat sf = Tools.StringFormat(Tools.AlignHoriz.right, Tools.AlignVert.center); foreach (Tick tick in ticks) { if ((tick.value >= axes.y.low) && (tick.value <= axes.y.high)) { float yPixel = axes.GetPixel(0, tick.value).Y; gfx.DrawLine(Pens.LightGray, dataRect.Left, yPixel, dataRect.Right, yPixel); gfx.DrawLine(Pens.Black, dataRect.Left, yPixel, dataRect.Left - length, yPixel); gfx.DrawString(tick.label, font, brush, new PointF(dataRect.Left - length, yPixel), sf); } } }
private void RenderBottom(Graphics gfx, Axes axes) { RectangleF dataRect = axes.GetDataRect(); StringFormat sf = Tools.StringFormat(Tools.AlignHoriz.center, Tools.AlignVert.top); foreach (Tick tick in ticks) { if ((tick.value >= axes.x.low) && (tick.value <= axes.x.high)) { float xPixel = axes.GetPixel(tick.value, 0).X; gfx.DrawLine(Pens.LightGray, xPixel, dataRect.Bottom, xPixel, dataRect.Top); gfx.DrawLine(Pens.Black, xPixel, dataRect.Bottom, xPixel, dataRect.Bottom + length); gfx.DrawString(tick.label, font, brush, new PointF(xPixel, dataRect.Bottom + length), sf); } } }