/// <summary> /// X軸として描画 /// </summary> /// <param name="context"></param> void drawAxisX(IDrawContext context) { //軸線 var startPos = new PointF(context.PlotArea.Left, context.PlotArea.Bottom); var endPos = new PointF(context.PlotArea.Right, context.PlotArea.Bottom); context.DrawLine(startPos, endPos, 1, Parameter.Color); //キャプション context.DrawString(startPos.X, startPos.Y, Parameter.Font.Height, Parameter.Color, Translator(LogicalMin), StringAlignment.Middle, StringAlignment.Near); context.DrawString(endPos.X, endPos.Y, Parameter.Font.Height, Parameter.Color, Translator(LogicalMax), StringAlignment.Middle, StringAlignment.Near); //途中の線とキャプション if (TickEnumerator != null) { foreach (var tickInfo in TickEnumerator(this)) { var c = tickInfo.Item2 ? Parameter.WideGridColor : Parameter.NarrowGridColor; var e = tickInfo.Item2 ? Parameter.DrawWideGrid : Parameter.DrawNarrowGrid; var w = tickInfo.Item2 ? Parameter.DrawWideTickCaption : Parameter.DrawNarrowTickCaption; var x = LogicalValueToPhysicalValue(tickInfo.Item1, context.PlotArea.Location); if (e) { context.DrawLine(new PointF(x, context.PlotArea.Top), new PointF(x, context.PlotArea.Bottom), 1, c); } if (w) { context.DrawString(x, context.PlotArea.Bottom, Parameter.Font.Height, c, Translator(tickInfo.Item1), StringAlignment.Middle, StringAlignment.Near); } } } }
private void drawLineChart(IDrawContext context, Axis axisX, Axis axisY) { var plotBase = new PointF(context.PlotArea.Left, context.PlotArea.Top); var startP = new PointF(); var endP = new PointF(); setPhisicalPos(ref endP, items[0].Key, items[0].Value, axisX, axisY, plotBase); if (items.Count == 1) { context.DrawPoint(endP, Width, Color); return; } startP = endP; for (var i = 1; i < items.Count; i++) { setPhisicalPos(ref endP, items[i].Key, items[i].Value, axisX, axisY, plotBase); //前から1pxも動いてなかったら線を引かない if (((int)(startP.X - endP.X) != 0) || ((int)(startP.Y - endP.Y) != 0)) { context.DrawLine(startP, endP, Width, Color); startP = endP; } } }
public override void Draw(IDrawContext drawContext, DrawingLayer drawingLayer) { var finalFrom = drawingLayer.CameraMode == CameraMode.Fix ? this.FromVector : this.FromVector .Scale(drawContext.Camera.ZoomFactor) .Translate(drawContext.Camera.GetSceneTranslationVector(drawingLayer.ParallaxScrollingVector)); var finalTo = drawingLayer.CameraMode == CameraMode.Fix ? this.ToVector : this.ToVector .Scale(drawContext.Camera.ZoomFactor) .Translate(drawContext.Camera.GetSceneTranslationVector(drawingLayer.ParallaxScrollingVector)); var zoom = drawingLayer.CameraMode == CameraMode.Fix ? 1.0f : this.Width * drawContext.Camera.ZoomFactor; //var finalWidth = this.width * camera.ZoomFactor; //var angle = (float)Math.Atan2(finalTo.Y - finalFrom.Y, finalTo.X - finalFrom.X); //var length = Vector.Distance(finalFrom, finalTo); var param = new DrawLineParams { VectorFrom = finalFrom, VectorTo = finalTo, Width = zoom, Color = this.Color }; drawContext.DrawLine(param); //spriteBatch.Draw(this.blank, finalFrom, null, this.color, angle, Vector.Zero, // new Vector(length, finalWidth), SpriteEffects.None, 0); }
/// <summary> /// Y軸として描画 /// </summary> /// <param name="context"></param> void drawAxisY(IDrawContext context) { //軸線 var startPos = new PointF(); var endPos = new PointF(); var hAlign = StringAlignment.Far; startPos.Y = context.PlotArea.Top; endPos.Y = context.PlotArea.Bottom; if (Type == AxisType.YLeft) { startPos.X = endPos.X = context.PlotArea.Left; hAlign = StringAlignment.Far; } else { startPos.X = endPos.X = context.PlotArea.Right; hAlign = StringAlignment.Near; } context.DrawLine(startPos, endPos, 1, Parameter.Color); //キャプション context.DrawString(startPos.X, startPos.Y, Parameter.Font.Height, Parameter.Color, Translator(LogicalMax), hAlign, StringAlignment.Middle); context.DrawString(endPos.X, endPos.Y, Parameter.Font.Height, Parameter.Color, Translator(LogicalMin), hAlign, StringAlignment.Middle); //途中の線とキャプション if ((TickEnumerator != null)) { foreach (var tickInfo in TickEnumerator(this)) { var c = tickInfo.Item2 ? Parameter.WideGridColor : Parameter.NarrowGridColor; var e = tickInfo.Item2 ? Parameter.DrawWideGrid : Parameter.DrawNarrowGrid; var w = tickInfo.Item2 ? Parameter.DrawWideTickCaption : Parameter.DrawNarrowTickCaption; var y = LogicalValueToPhysicalValue(tickInfo.Item1, context.PlotArea.Location); if (e) { context.DrawLine(new PointF(context.PlotArea.Left, y), new PointF(context.PlotArea.Right, y), 1, c); } if (w) { context.DrawString(startPos.X, y, Parameter.Font.Height, c, Translator(tickInfo.Item1), hAlign, StringAlignment.Middle); } } } }
void DrawPath(IDrawContext context, Settings.Path path) { for (int i = 1; i < path.Points.Length; i++) { var prev = path.Points[i - 1]; var next = path.Points[i]; context.DrawLine(prev.X, prev.Y, next.X, next.Y, Color.Yellow, 3f); } }
/// <summary> /// 描画処理の実施 /// </summary> /// <param name="context"></param> public void Draw(IDrawContext context) { //位置決め var x = AxisX.LogicalValueToPhysicalValue(LogicalX, context.PlotArea.Location); var y = AxisY.LogicalValueToPhysicalValue(LogicalY, context.PlotArea.Location); //ラベル context.DrawString(x, y, 16, Color, Message, HolizontalAlign, VerticalAlign); //水平線 if (DrawHolizontalLine) { context.DrawLine(new PointF(context.PlotArea.Left, y), new PointF(context.PlotArea.Right, y), 1, Color); } //垂直線 if (DrawVerticalLine) { context.DrawLine(new PointF(x, context.PlotArea.Top), new PointF(x, context.PlotArea.Bottom), 1, Color); } }
protected void DrawLine(IDrawContext drawContext, DrawingLayer drawingLayer, Vector fromVector, Vector toVector, int width, Color color) { var finalFrom = fromVector .Scale(drawContext.Camera.ZoomFactor) .Translate(drawContext.Camera.GetSceneTranslationVector(drawingLayer.ParallaxScrollingVector)); var finalTo = toVector .Scale(drawContext.Camera.ZoomFactor) .Translate(drawContext.Camera.GetSceneTranslationVector(drawingLayer.ParallaxScrollingVector)); var param = new DrawLineParams { VectorFrom = finalFrom, VectorTo = finalTo, Width = width * drawContext.Camera.ZoomFactor, Color = color }; drawContext.DrawLine(param); }
private static void DrawLine(IDrawContext drawContext, Vector from, Vector to) { drawContext.DrawLine(new DrawLineParams { VectorFrom = from, VectorTo = to, Width = 2, Color = Color.Red }); }