source: trunk/CrypPlugins/WorkspaceManager/View/VisualComponents/CircularProgressBar.xaml.cs @ 2388

Last change on this file since 2388 was 1685, checked in by matkovic, 11 years ago

-Style changes

File size: 2.5 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using System.Windows;
6using System.Windows.Controls;
7using System.Windows.Data;
8using System.Windows.Documents;
9using System.Windows.Input;
10using System.Windows.Media;
11using System.Windows.Media.Imaging;
12using System.Windows.Navigation;
13using System.Windows.Shapes;
14using System.ComponentModel;
15using System.Windows.Media.Animation;
16
17namespace WorkspaceManager.View.VisualComponents
18{
19    /// <summary>
20    /// Interaction logic for CircularProgressBar.xaml
21    /// </summary>
22    public partial class CircularProgressBar : UserControl
23    {
24        private double percentage;
25        public double Percentage { 
26            set 
27            {
28                percentage = value;
29                SetPieChart(PercentagePath, PercentageArc, percentage);
30            }
31            get 
32            {
33                return percentage;
34            }
35        }
36
37        public CircularProgressBar()
38        {
39            InitializeComponent();
40        }
41
42        private Storyboard setColorinAnimation(Color color)
43        {
44            Storyboard storyboard = Resources["ColorAnimation"] as Storyboard;
45            ColorAnimation coloranimation = storyboard.Children[0] as ColorAnimation;
46            coloranimation.To = color;
47            return storyboard;
48        }
49
50        private void SetPieChart(Path percentagePath, ArcSegment arcSeg, double percentage)
51        {
52            double percToUse = percentage;
53            if (percentage > 1)
54                percToUse = percToUse / 100.0;
55            if (percToUse < 0.35)
56            {
57                percentagePath.BeginStoryboard(setColorinAnimation(Colors.Red));
58            }
59            else if (percToUse >= 0.35 && percToUse < 0.75)
60            {
61                percentagePath.BeginStoryboard(setColorinAnimation(Colors.Yellow));
62            }
63            else
64            {
65                percentagePath.BeginStoryboard(setColorinAnimation(Colors.ForestGreen));
66            }
67            double angleFromPerc = 360 * percToUse;
68            double angleInRadians = (Math.PI / 180) * angleFromPerc;
69
70            Point endpoint = new Point();
71            endpoint.X = (arcSeg.Size.Width) * Math.Cos(angleInRadians) + arcSeg.Point.X;
72            endpoint.Y = (arcSeg.Size.Height) * Math.Sin(angleInRadians) + arcSeg.Point.Y;
73
74            arcSeg.IsLargeArc = angleFromPerc > 180;
75            arcSeg.Point = endpoint;
76        }
77    }
78}
Note: See TracBrowser for help on using the repository browser.