예제 #1
0
        private static void OnRadiusScalePropertyChanged(DependencyObject sender, DependencyPropertyChangedEventArgs args)
        {
            RadRadialGauge gauge = sender as RadRadialGauge;

            if (!gauge.IsTemplateApplied)
            {
                return;
            }

            gauge.Panel.ScheduleUpdate();
        }
        private void PrepareReset(Size availableSize)
        {
            this.radiusScale = RadRadialGauge.GetIndicatorRadiusScale(this);
            this.center      = new Point(availableSize.Width / 2, availableSize.Height / 2);
            this.radius      = Math.Min(availableSize.Width, availableSize.Height) / 2;

            var gauge          = this.Owner.OwnerGauge as RadRadialGauge;
            var gaugeMinAngle  = gauge.MinAngle;
            var gaugeMaxAngle  = gauge.MaxAngle;
            var physicalLength = gaugeMaxAngle - gaugeMinAngle;
            var logicalLength  = Math.Abs(this.Owner.OwnerGauge.MaxValue - this.Owner.OwnerGauge.MinValue);

            var logicalStartValue = this.StartValue - this.Owner.OwnerGauge.MinValue;
            var startValueAngle   = RadGauge.MapLogicalToPhysicalValue(logicalStartValue, physicalLength, logicalLength);
            var actualValueAngle  = RadGauge.MapLogicalToPhysicalValue(this.ActualValue - this.Owner.OwnerGauge.MinValue, physicalLength, logicalLength);

            this.minAngle = gaugeMinAngle + startValueAngle;
            this.maxAngle = gaugeMinAngle + actualValueAngle;
        }
예제 #3
0
        private void ArrangeRadially(double angle, Point center, double radius)
        {
            Point location = RadialGaugePanel.CreateRotatedPoint(angle, radius, center, RadRadialGauge.GetIndicatorRadiusScale(this));

            Canvas.SetLeft(this.visualElement, location.X);
            Canvas.SetTop(this.visualElement, location.Y);
        }
예제 #4
0
 private void PrivateUpdate()
 {
     this.radiusScale = RadRadialGauge.GetIndicatorRadiusScale(this);
     this.UpdateAngleRestrictions();
 }