Создание графика с мягкими краями на Windows Phone 7 - PullRequest
0 голосов
/ 02 декабря 2011

Я пытаюсь нарисовать график в своем приложении для Windows Phone 7.Проблема, с которой я сталкиваюсь, состоит в том, что у графа есть острые края, но я должен иметь граф с мягкими краями.

Я использую следующий код, чтобы сделать края мягкими:

Polyline chartPolyline = new Polyline();
chartPolyline.Points = graphPointsCollection; // graphPointsCollection is collection of points
chartPolyline.Stroke = borderBrush;
chartPolyline.StrokeThickness = 3;
chartPolyline.StrokeLineJoin = PenLineJoin.Round;
chartPolyline.StrokeDashCap = PenLineCap.Round;
chartPolyline.StrokeStartLineCap = PenLineCap.Round;
chartPolyline.StrokeEndLineCap = PenLineCap.Round;

Но на выходе все еще есть острые края.Куда я иду не так?

1 Ответ

1 голос
/ 06 декабря 2011

Для гладких кривых вы можете использовать, например, кривую Безье:

        string PathFormatter = "<PathGeometry xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"> "
            + "<PathGeometry.Figures>"
            + "<PathFigure StartPoint=\"{0},{1}\">"
            + "<PathFigure.Segments>"
            + "<PathSegmentCollection>"
            + "<BezierSegment Point1=\"{2},{3}\" Point2=\"{4},{5}\" Point3=\"{6},{7}\" />"
            + "</PathSegmentCollection>"
            + "</PathFigure.Segments>"
            + "</PathFigure>"
            + "</PathGeometry.Figures>"
            + "</PathGeometry>";

        double p1x = x1 * 0.67 + x2 * 0.33;
        double p1y = y1;
        double p2x = x1 * 0.33 + x2 * 0.67;
        double p2y = y2;
        string data = String.Format(PathFormatter, x1, y1, p1x, p1y, p2x, p2y, x2, y2);

        Graphic.Children.Add(new Path()
        {
            Data = (PathGeometry)XamlReader.Load(data),
            Stroke = new SolidColorBrush(color),
            StrokeThickness = 4,
            VerticalAlignment = System.Windows.VerticalAlignment.Bottom,
            Height = 368,
            CacheMode = new BitmapCache(),
            //Margin = new Thickness(0, 0, 0, 0),
            HorizontalAlignment = System.Windows.HorizontalAlignment.Left
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...