Exemple #1
0
        /// <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);
                    }
                }
            }
        }
Exemple #2
0
        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);
        }
Exemple #4
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);
     }
 }
Exemple #6
0
        /// <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 });
 }