== ComponentOne Controls == === C1Chart === Example of Audiogram using C1Chart: ... 250 1k 2k . 4k . 6k . 8k Example of Fitting Chart: 250 500 750 1k 1.5k 2k 3k 4k 6k 8k 250 500 750 1k 1.5k 2k 3k 4k 6k 8k C#: public WindowMain() { InitializeComponent(); InitializeBinauralAudiogramChart(); InitializeFittingCharts(); AudiogramLeft.InitializeChart(); AudiogramRight.InitializeChart(); // initialize single audiograms AudiogramLeft.AudiogramChart.Tag=0; SelectScreen("patient"); } ... private void InitializeBinauralAudiogramChart() { //templ.Visibility = Visibility.Collapsed; //templ.Checked += (s, a) => { UpdateTemplate(chart.View.AxisX); UpdateTemplate(chart.View.AxisY); }; //templ.Unchecked += (s, a) => { UpdateTemplate(chart.View.AxisX); UpdateTemplate(chart.View.AxisY); }; //xbase.ItemsSource = new string[] { "None", "e", "10" }; //xbase.Tag = chart.View.AxisX; //xbase.SelectionChanged += new SelectionChangedEventHandler(base_SelectionChanged); //xbase.SelectedIndex = 2; //ybase.ItemsSource = new string[] { "None", "e", "10" }; //ybase.Tag = chart.View.AxisY; //ybase.SelectionChanged += new SelectionChangedEventHandler(base_SelectionChanged); //ybase.SelectedIndex = 2; //templ.IsChecked = true; chartAudiogramBinaural.ChartType = ChartType.LineSymbols; //ChartType.LineSmoothed; // create data series chartAudiogramBinaural.Data.Children.Clear(); ////chartAudiogramBinaural.Data.Children.Add(Function.CreateDataSeries(0.01, 10, 100, (val) => Math.Log10(val), "y(x)=log(x)")); ////chartAudiogramBinaural.Data.Children.Add(Function.CreateDataSeries(0.01, 10, 100, (val) => val, "y(x)=x")); ////chartAudiogramBinaural.Data.Children.Add(Function.CreateDataSeries(0.01, 1, 100, (val) => Math.Pow(10, val), "y(x)=10^x")); //chartAudiogramBinaural.Data.Children.Add(Function.CreateDataSeries(.250, 8, 10, (val) => Math.Log10(val), "Left")); //chartAudiogramBinaural.Data.Children.Add(Function.CreateDataSeries(250, 8000, 10, (val) => Math.Log10(val), "Right")); double[] DataX = new double[10]; double[] DataYRight = new double[10]; double[] DataYLeft = new double[10]; DataX[0] = .250; DataX[1] = .500; DataX[2] = .750; DataX[3] = 1.000; DataX[4] = 1.500; DataX[5] = 2.000; DataX[6] = 3.000; DataX[7] = 4.000; DataX[8] = 6.000; DataX[9] = 8.000; Random randNum = new Random(); for (int i = 0; i < DataYRight.Length; i++) { DataYRight[i] = randNum.Next(65); } chartAudiogramBinaural.Data.Children.Add(Function.CreateDataSeries(DataX, DataYRight, "Left")); for (int i = 0; i < DataYRight.Length; i++) { DataYLeft[i] = randNum.Next(35); } chartAudiogramBinaural.Data.Children.Add(Function.CreateDataSeries(DataX, DataYLeft, "Right")); // set dataseries colors and symbol markers chartAudiogramBinaural.Data.Children[0].SymbolMarker = Marker.DiagonalCross; chartAudiogramBinaural.Data.Children[0].SymbolFill = Brushes.White; chartAudiogramBinaural.Data.Children[0].SymbolStroke = Brushes.Blue; chartAudiogramBinaural.Data.Children[0].ConnectionFill = Brushes.Blue; chartAudiogramBinaural.Data.Children[1].SymbolMarker = Marker.Dot; chartAudiogramBinaural.Data.Children[1].SymbolFill = Brushes.White; chartAudiogramBinaural.Data.Children[1].SymbolStroke = Brushes.Red; chartAudiogramBinaural.Data.Children[1].ConnectionFill = Brushes.Red; // minor grid chartAudiogramBinaural.View.AxisX.MinorUnit = .50; chartAudiogramBinaural.View.AxisX.MinorGridStroke = new SolidColorBrush(Colors.LightGray); chartAudiogramBinaural.View.AxisX.MinorGridStrokeThickness = 0.5; // major grid chartAudiogramBinaural.View.AxisX.MajorGridStroke = new SolidColorBrush(Colors.DarkGray); //chartAudiogramBinaural.View.AxisX.MajorGridStrokeDashes = null; chartAudiogramBinaural.View.AxisX.MajorUnit = 1; // X axis Min/Max chartAudiogramBinaural.View.AxisX.Min = .100; chartAudiogramBinaural.View.AxisX.Max = 10; // log base chartAudiogramBinaural.View.AxisX.LogBase = 10; chartAudiogramBinaural.View.AxisY.MajorGridStroke = new SolidColorBrush(Colors.DarkGray); //chartAudiogramBinaural.View.AxisY.MajorGridStrokeDashes = null; // X labels //chartAudiogramBinaural.ChartData.ItemNames = (Array here); //string[] XLabels = new string[10] { "250", "500", "750", "1k", "1.5k", "2k", "3k", "4k", "6k", "8k" }; //string[] XLabels = new string[32] { "250", "500", "750", "1k", "", "1.5k", "", "2k", "", "", // "", "3k", "", "", "", "4k", "", "", "", "", // "", "", "", "6k", "", "", "", "", "", "", // "", "8k" }; //string[] XLabels = new string[9] { "250", "1k", "2k", "3k", "4k", "", "6k", "", "8k" }; string[] XLabels = new string[9] { "250", "1k", "2k", ".", "4k", ".", "6k", ".", "8k" }; chartAudiogramBinaural.Data.ItemNames = XLabels; } private void InitializeFittingCharts() { // set chart type chartLeft.ChartType = ChartType.LineSmoothed; //ChartType.LineSymbolsSmoothed; chartRight.ChartType = ChartType.LineSmoothed; //ChartType.LineSymbolsSmoothed; // clear data series chartLeft.Data.Children.Clear(); chartRight.Data.Children.Clear(); // create data series double[] DataX = new double[10]; double[] DataYLoud = new double[10]; double[] DataYAvg = new double[10]; double[] DataYSoft = new double[10]; double[] DataYArea1 = new double[10] { 140, 140, 140, 140, 140, 140, 140, 140, 140, 140 }; double[] DataYArea2 = new double[10] { 70, 70, 70, 80, 80, 80, 70, 70, 60, 60 }; double[] DataYArea3 = new double[10] { 10, 10, 10, 20, 20, 20, 10, 10, 10, 10 }; DataX[0] = .250; DataX[1] = .500; DataX[2] = .750; DataX[3] = 1.000; DataX[4] = 1.500; DataX[5] = 2.000; DataX[6] = 3.000; DataX[7] = 4.000; DataX[8] = 6.000; DataX[9] = 8.000; Random randNum = new Random(); // shaded area background chartLeft.Data.Children.Add(Function.CreateDataSeries(DataX, DataYArea1, "area")); chartLeft.Data.Children.Add(Function.CreateDataSeries(DataX, DataYArea2, "area")); chartLeft.Data.Children.Add(Function.CreateDataSeries(DataX, DataYArea3, "area")); chartRight.Data.Children.Add(Function.CreateDataSeries(DataX, DataYArea1, "area")); chartRight.Data.Children.Add(Function.CreateDataSeries(DataX, DataYArea2, "area")); chartRight.Data.Children.Add(Function.CreateDataSeries(DataX, DataYArea3, "area")); for (int i = 0; i < 3; i++) { chartLeft.Data.Children[i].ChartType = ChartType.AreaSmoothed; chartRight.Data.Children[i].ChartType = ChartType.AreaSmoothed; chartLeft.Data.Children[i].ConnectionFill = Brushes.LightGray; chartLeft.Data.Children[i].ConnectionStroke = Brushes.Transparent; chartRight.Data.Children[i].ConnectionFill = Brushes.LightGray; chartRight.Data.Children[i].ConnectionStroke = Brushes.Transparent; } chartLeft.Data.Children[1].ConnectionFill = Brushes.White; chartRight.Data.Children[1].ConnectionFill = Brushes.White; // Loud series for (int i = 0; i < DataYLoud.Length; i++) { DataYLoud[i] = randNum.Next(35); } chartLeft.Data.Children.Add(Function.CreateDataSeries(DataX, DataYLoud, "Loud")); chartRight.Data.Children.Add(Function.CreateDataSeries(DataX, DataYLoud, "Loud")); //chartRight.Data.Children.Add(Function.CreateDataSeries(DataYLoud, "Loud")); // Avg series for (int i = 0; i < DataYAvg.Length; i++) { DataYAvg[i] = randNum.Next(45); } chartLeft.Data.Children.Add(Function.CreateDataSeries(DataX, DataYAvg, "Avg")); chartRight.Data.Children.Add(Function.CreateDataSeries(DataX, DataYAvg, "Avg")); //chartRight.Data.Children.Add(Function.CreateDataSeries(DataYAvg, "Avg")); // Soft series for (int i = 0; i < DataYAvg.Length; i++) { DataYSoft[i] = randNum.Next(65); } chartLeft.Data.Children.Add(Function.CreateDataSeries(DataX, DataYSoft, "Soft")); chartRight.Data.Children.Add(Function.CreateDataSeries(DataX, DataYSoft, "Soft")); //chartRight.Data.Children.Add(Function.CreateDataSeries(DataYSoft, "Soft")); // set dataseries colors and symbol markers chartLeft.Data.Children[3].ConnectionFill = Brushes.LightCoral; chartLeft.Data.Children[4].ConnectionFill = Brushes.Pink; chartLeft.Data.Children[5].ConnectionFill = Brushes.DarkGray; chartRight.Data.Children[3].ConnectionFill = Brushes.LightCoral; chartRight.Data.Children[4].ConnectionFill = Brushes.Pink; chartRight.Data.Children[5].ConnectionFill = Brushes.DarkGray; for (int i = 3; i < 6; i++) { chartLeft.Data.Children[i].SymbolMarker = Marker.None; chartRight.Data.Children[i].SymbolMarker = Marker.None; //chartLeft.Data.Children[0].SymbolMarker = Marker.DiagonalCross; //chartLeft.Data.Children[0].SymbolFill = Brushes.White; //chartLeft.Data.Children[0].SymbolStroke = Brushes.Blue; //chartLeft.Data.Children[0].ConnectionFill = Brushes.Blue; //chartRight.Data.Children[1].SymbolMarker = Marker.Dot; //chartRight.Data.Children[1].SymbolFill = Brushes.White; //chartRight.Data.Children[1].SymbolStroke = Brushes.Red; //chartRight.Data.Children[1].ConnectionFill = Brushes.Red; } // minor grid chartLeft.View.AxisX.MinorUnit = 1; chartLeft.View.AxisX.MinorGridStroke = new SolidColorBrush(Colors.LightGray); chartLeft.View.AxisX.MinorGridStrokeThickness = 0.5; chartRight.View.AxisX.MinorUnit = 1; chartRight.View.AxisX.MinorGridStroke = new SolidColorBrush(Colors.LightGray); chartRight.View.AxisX.MinorGridStrokeThickness = 0.5; // major grid chartLeft.View.AxisX.MajorGridStroke = new SolidColorBrush(Colors.DarkGray); //chartLeft.View.AxisX.MajorGridStrokeDashes = null; chartRight.View.AxisX.MajorGridStroke = new SolidColorBrush(Colors.DarkGray); //chartRight.View.AxisX.MajorGridStrokeDashes = null; // log base //chartLeft.View.AxisX.LogBase = 10; //chartRight.View.AxisX.LogBase = 10; chartLeft.View.AxisY.MajorGridStroke = new SolidColorBrush(Colors.DarkGray); //chartLeft.View.AxisY.MajorGridStrokeDashes = null; chartRight.View.AxisY.MajorGridStroke = new SolidColorBrush(Colors.DarkGray); //chartRight.View.AxisY.MajorGridStrokeDashes = null; } private void btnSelectFittingSide_Click(object sender, RoutedEventArgs e) { Thickness margin = new Thickness(); margin.Left = 5; margin.Top = 5; margin.Right = 5; margin.Bottom = 5; //brdAudioChartLeft.Margin = margin; //brdAudioChartRight.Margin = margin; chartLeft.Margin = margin; chartRight.Margin = margin; chartLeft.IsEnabled = true; chartRight.IsEnabled = true; chartLeft.Opacity = 1.0; chartRight.Opacity = 1.0; brdAudioChartHeaderLeft.Opacity = 1.0; brdAudioChartHeaderRight.Opacity = 1.0; SolidColorBrush DefaultBrush = new SolidColorBrush(); DefaultBrush.Color = Color.FromArgb(255, 132, 132, 132); // #FF848484; // Gray Thickness DefaultBrushSize = new Thickness(); DefaultBrushSize.Left = 2.0; DefaultBrushSize.Top = 2.0; DefaultBrushSize.Right = 2.0; DefaultBrushSize.Bottom = 2.0; //chartLeft.BorderThickness = DefaultBrushSize; //chartRight.BorderThickness = DefaultBrushSize; brdAudioChartLeft.BorderThickness = DefaultBrushSize; brdAudioChartRight.BorderThickness = DefaultBrushSize; if (sender == btnSelectLeftFitting) { //chartLeft.BorderBrush = Brushes.Blue; //chartRight.BorderBrush = DefaultBrush; //brdAudioChartLeft.BorderBrush = Brushes.Blue; //brdAudioChartRight.BorderBrush = DefaultBrush; brdAudioChartHeaderRight.Opacity = 0.5; //margin.Left = 45; //margin.Top = 45; //margin.Right = 45; //margin.Bottom = 45; ////brdAudioChartRight.Margin = margin; //chartRight.Margin = margin; chartRight.IsEnabled = false; chartRight.Opacity = 0.5; } else if (sender == btnSelectRightFitting) { //chartLeft.BorderBrush = DefaultBrush; //chartRight.BorderBrush = Brushes.Red; //brdAudioChartLeft.BorderBrush = DefaultBrush; //brdAudioChartRight.BorderBrush = Brushes.Red; brdAudioChartHeaderLeft.Opacity = 0.5; //margin.Left = 45; //margin.Top = 45; //margin.Right = 45; //margin.Bottom = 45; ////brdAudioChartLeft.Margin = margin; //chartLeft.Margin = margin; chartLeft.IsEnabled = false; chartLeft.Opacity = 0.5; } else { //chartLeft.BorderBrush = Brushes.Blue; //chartRight.BorderBrush = Brushes.Red; //brdAudioChartLeft.BorderBrush = Brushes.Blue; //brdAudioChartRight.BorderBrush = Brushes.Red; } }