コード例 #1
0
ファイル: PolarChartGrid.cs プロジェクト: zach14c/UI-For-UWP
        private PathGeometry BuildPolarStripe(RadPolarVector vector, RadPolarVector nextVector, bool isLargeArc)
        {
            RadPoint center = this.model.layoutSlot.Center;
            double   radius = this.model.layoutSlot.Width / 2;

            double endAngle = nextVector.Angle;

            if (endAngle == 360)
            {
                endAngle = 0;
            }
            RadPoint arcEndPoint = RadMath.GetArcPoint(endAngle, center, radius);

            PathGeometry geometry = new PathGeometry();
            PathFigure   figure   = new PathFigure();

            figure.IsClosed = true;
            figure.IsFilled = true;

            figure.StartPoint = new Point(vector.Center.X, vector.Center.Y);

            // first line
            figure.Segments.Add(new LineSegment()
            {
                Point = new Point(vector.Point.X, vector.Point.Y)
            });

            // arc
            ArcSegment arc = new ArcSegment();

            arc.SweepDirection = (this.Chart as RadPolarChart).RadialAxis.SweepDirection;
            arc.Size           = new Size(radius, radius);
            arc.IsLargeArc     = isLargeArc;
            arc.Point          = new Point(arcEndPoint.X, arcEndPoint.Y);
            figure.Segments.Add(arc);

            // second line
            figure.Segments.Add(new LineSegment()
            {
                Point = new Point(nextVector.Point.X, nextVector.Point.Y)
            });

            geometry.Figures.Add(figure);

            return(geometry);
        }
コード例 #2
0
        internal override void UpdatePresenters()
        {
            RadPolarVector vector1 = this.model.polarVector1;
            RadPolarVector vector2 = this.model.polarVector2;
            bool           isLargeArc;

            if (vector1.Angle > vector2.Angle)
            {
                isLargeArc = vector1.Angle - vector2.Angle > 180d;
            }
            else
            {
                isLargeArc = (vector1.Angle + 360) - vector2.Angle > 180d;
            }
            if (this.model.Axis.IsInverse)
            {
                this.presenter.Data = this.BuildPolarStripe(vector1, vector2, !isLargeArc);
            }
            else
            {
                this.presenter.Data = this.BuildPolarStripe(vector2, vector1, isLargeArc);
            }
        }
コード例 #3
0
        private PathGeometry BuildPolarStripe(RadPolarVector vector, RadPolarVector nextVector, bool isLargeArc)
        {
            double       radius   = this.model.radius;
            Point        center   = new Point(vector.Center.X, vector.Center.Y);
            PathGeometry geometry = new PathGeometry();
            PathFigure   figure   = new PathFigure();

            figure.IsClosed   = true;
            figure.IsFilled   = true;
            figure.StartPoint = center;

            // first line
            LineSegment line1 = new LineSegment();

            line1.Point = new Point(vector.Point.X, vector.Point.Y);
            figure.Segments.Add(line1);

            // arc
            ArcSegment arc = new ArcSegment();

            arc.SweepDirection = SweepDirection.Clockwise;
            arc.Size           = new Size(radius, radius);
            arc.IsLargeArc     = isLargeArc;
            arc.Point          = new Point(nextVector.Point.X, nextVector.Point.Y);
            figure.Segments.Add(arc);

            // second line
            var line2 = new LineSegment();

            line2.Point = center;
            figure.Segments.Add(line2);

            geometry.Figures.Add(figure);

            return(geometry);
        }