private void DrawTicks(Layout layout, Axes axes, SKCanvas canvas) { // TODO: this tick drawing code is just a placeholder. float tickLength = 3; left.GenerateTicks(axes.y.low, axes.y.high, layout.scaleLeft.Height, 40); for (int i = 0; i < left.tickPositions.Length; i++) { float yPos = axes.GetPixel(0, left.tickPositions[i]).Y; SKPoint tickRight = new SKPoint(layout.scaleLeft.Right, yPos); SKPoint tickLeft = new SKPoint(layout.scaleLeft.Right - tickLength, yPos); canvas.DrawLine(tickLeft, tickRight, left.paint); SKPaint paint = left.paint; paint.TextAlign = SKTextAlign.Right; canvas.DrawText(left.tickLabels[i], tickLeft.X, yPos, paint); } right.GenerateTicks(axes.y.low, axes.y.high, layout.scaleRight.Height, 40); for (int i = 0; i < right.tickPositions.Length; i++) { float yPos = axes.GetPixel(0, right.tickPositions[i]).Y; SKPoint tickRight = new SKPoint(layout.scaleRight.Left + tickLength, yPos); SKPoint tickLeft = new SKPoint(layout.scaleRight.Left, yPos); canvas.DrawLine(tickLeft, tickRight, right.paint); SKPaint paint = left.paint; paint.TextAlign = SKTextAlign.Left; canvas.DrawText(right.tickLabels[i], tickRight.X, yPos, paint); } bottom.GenerateTicks(axes.x.low, axes.x.high, layout.scaleBottom.Width, 80); for (int i = 0; i < bottom.tickPositions.Length; i++) { float xPos = axes.GetPixel(bottom.tickPositions[i], 0).X; SKPoint tickTop = new SKPoint(xPos, layout.scaleBottom.Top); SKPoint tickBottom = new SKPoint(xPos, layout.scaleBottom.Top + tickLength); canvas.DrawLine(tickTop, tickBottom, bottom.paint); SKPaint paint = left.paint; paint.TextAlign = SKTextAlign.Center; canvas.DrawText(bottom.tickLabels[i], xPos, tickBottom.Y + bottom.paint.TextSize, paint); } top.GenerateTicks(axes.x.low, axes.x.high, layout.scaleTop.Width, 80); for (int i = 0; i < top.tickPositions.Length; i++) { float xPos = axes.GetPixel(top.tickPositions[i], 0).X; SKPoint tickTop = new SKPoint(xPos, layout.scaleTop.Bottom - tickLength); SKPoint tickBottom = new SKPoint(xPos, layout.scaleTop.Bottom); canvas.DrawLine(tickTop, tickBottom, top.paint); SKPaint paint = left.paint; paint.TextAlign = SKTextAlign.Center; canvas.DrawText(top.tickLabels[i], xPos, tickTop.Y - 2, paint); } }
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 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 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) { 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); } } }
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); } } }