how to don't render gridline outside EllipseAnnotation in oxyplot?

夙愿已清 提交于 2019-12-22 22:27:11

问题


I want to draw a plot exactly like image below with oxyplot.

the problem here is gridlines. i dont want to draw them outside of the largest circle.

this is what i get till now :

PS: for anyone else who want to know how to achieve this : (special thanks for @dd4711 who helped me with this question

var model = new PlotModel {
            Title = "EllipseAnnotations",
            PlotAreaBorderColor = OxyColors.Transparent
        };

        var series = new LineSeries {
            MarkerType = MarkerType.Cross,
            MarkerSize = 7,
            MarkerStroke = OxyColors.Red,
            MarkerStrokeThickness = 3,
            Color = OxyColors.Red
        };

        series.Points.Add(new DataPoint(65, 45));

        model.Annotations.Add(new EllipseAnnotation { X = 50, Y = 50, Width = 10, Height = 10, Fill = OxyColor.FromAColor(0xaa,OxyColors.LightGray), Stroke = OxyColors.Black, StrokeThickness = 1 });
        model.Annotations.Add(new EllipseAnnotation { X = 50, Y = 50, Width = 30, Height = 30, Fill = OxyColors.Transparent, Stroke = OxyColors.Black, StrokeThickness = 1 });
        model.Annotations.Add(new EllipseAnnotation
        {
            X = 50,
            Y = 50,
            Width = 60,
            Height = 60,
            Fill = OxyColors.Transparent,
            Stroke = OxyColors.Black, StrokeThickness = 1,
        });

        for (int x = 2; x < 9; x++)
        {
            if (x != 5)
            {
                model.Annotations.Add(new TextAnnotation
                {
                    TextPosition = new DataPoint(x * 10, 50),
                    Text = (x * 10).ToString(),
                    Stroke = OxyColors.White,
                    Background = OxyColors.White,
                    TextHorizontalAlignment = HorizontalAlignment.Center,
                    TextVerticalAlignment = VerticalAlignment.Middle,
                    StrokeThickness = 0
                });

                model.Annotations.Add(new TextAnnotation
                {
                    TextPosition = new DataPoint(50, x*10),
                    Text = (x * 10).ToString(),
                    Stroke = OxyColors.White,
                    Background = OxyColors.White,
                    TextHorizontalAlignment = HorizontalAlignment.Center,
                    TextVerticalAlignment = VerticalAlignment.Middle,
                    StrokeThickness = 0
                });
            }
        }

        model.Annotations.Add(new TextAnnotation
        {
            TextPosition = new DataPoint(50, 50),
            Text = "50",
            Stroke = OxyColor.FromRgb(0xdd, 0xdd, 0xdd),
            Background = OxyColor.FromRgb(0xdd, 0xdd, 0xdd),
            TextHorizontalAlignment = HorizontalAlignment.Center,
            TextVerticalAlignment = VerticalAlignment.Middle,
            StrokeThickness = 0
        });

        model.Axes.Add(new LinearAxis
        {
            Position = AxisPosition.Bottom,
            Minimum = 15,
            Maximum = 85,
            MajorStep = 10,
            MajorGridlineStyle = LineStyle.Dot,
            ExtraGridlines = new[] { 50.0 },
            ExtraGridlineColor = OxyColors.Black,
            AxislineColor = OxyColors.Transparent,
            TextColor = OxyColors.Transparent,
            TicklineColor = OxyColors.Transparent
        });

        model.Axes.Add(new LinearAxis
        {
            Position = AxisPosition.Left,
            Minimum = 15,
            Maximum = 85,
            MajorStep = 10,
            MajorGridlineStyle = LineStyle.Automatic,
            ExtraGridlines = new[] { 50.0 },
            ExtraGridlineColor = OxyColors.Black,
            AxislineColor =OxyColors.Transparent,
            TextColor = OxyColors.Transparent,
            TicklineColor = OxyColors.Transparent
        });

        model.Series.Add(series);

来源:https://stackoverflow.com/questions/44826731/how-to-dont-render-gridline-outside-ellipseannotation-in-oxyplot

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!