예제 #1
0
        static void DrawPlotMarker(LJD.Graphics g, Resources resources, LJD.Pen pen, PointF p, MarkerType markerType)
        {
            float markerSize = resources.MarkerSize;

            switch (markerType)
            {
            case MarkerType.Cross:
                g.DrawLine(pen, new PointF(p.X - markerSize, p.Y - markerSize), new PointF(p.X + markerSize, p.Y + markerSize));
                g.DrawLine(pen, new PointF(p.X - markerSize, p.Y + markerSize), new PointF(p.X + markerSize, p.Y - markerSize));
                break;

            case MarkerType.Circle:
                g.DrawEllipse(pen, new RectangleF(p.X - markerSize, p.Y - markerSize, markerSize * 2, markerSize * 2));
                break;

            case MarkerType.Square:
                g.DrawRectangle(pen, new RectangleF(p.X - markerSize, p.Y - markerSize, markerSize * 2, markerSize * 2));
                break;

            case MarkerType.Diamond:
                g.DrawLines(pen, new[]
                {
                    new PointF(p.X - markerSize, p.Y),
                    new PointF(p.X, p.Y - markerSize),
                    new PointF(p.X + markerSize, p.Y),
                    new PointF(p.X, p.Y + markerSize),
                    new PointF(p.X - markerSize, p.Y),
                });
                break;

            case MarkerType.Triangle:
                g.DrawLines(pen, new[]
                {
                    new PointF(p.X - markerSize, p.Y + markerSize / 2),
                    new PointF(p.X, p.Y - markerSize),
                    new PointF(p.X + markerSize, p.Y + markerSize / 2),
                    new PointF(p.X - markerSize, p.Y + markerSize / 2),
                });
                break;

            case MarkerType.Plus:
                g.DrawLine(pen, new PointF(p.X - markerSize, p.Y), new PointF(p.X + markerSize, p.Y));
                g.DrawLine(pen, new PointF(p.X, p.Y - markerSize), new PointF(p.X, p.Y + markerSize));
                break;

            case MarkerType.Star:
                // plus
                g.DrawLine(pen, new PointF(p.X - markerSize, p.Y), new PointF(p.X + markerSize, p.Y));
                g.DrawLine(pen, new PointF(p.X, p.Y - markerSize), new PointF(p.X, p.Y + markerSize));
                // cross
                g.DrawLine(pen, new PointF(p.X - markerSize, p.Y - markerSize), new PointF(p.X + markerSize, p.Y + markerSize));
                g.DrawLine(pen, new PointF(p.X - markerSize, p.Y + markerSize), new PointF(p.X + markerSize, p.Y - markerSize));
                break;
            }
        }