public override void Create() { nChartControl1.Panels.Clear(); // set a chart title NLabel header = new NLabel("Gauge Custom Labels"); header.TextStyle.FontStyle = new NFontStyle("Times New Roman", 18, System.Drawing.FontStyle.Italic); header.ContentAlignment = ContentAlignment.BottomRight; header.Location = new NPointL(new NLength(2, NRelativeUnit.ParentPercentage), new NLength(2, NRelativeUnit.ParentPercentage)); nChartControl1.Panels.Add(header); // create the radial gauge NRadialGaugePanel radialGauge = new NRadialGaugePanel(); radialGauge.Location = new NPointL(new NLength(10, NRelativeUnit.ParentPercentage), new NLength(12, NRelativeUnit.ParentPercentage)); radialGauge.Size = new NSizeL(new NLength(80, NRelativeUnit.ParentPercentage), new NLength(80, NRelativeUnit.ParentPercentage)); radialGauge.PaintEffect = new NGlassEffectStyle(); radialGauge.BorderStyle = new NEdgeBorderStyle(BorderShape.Auto); NAdvancedGradientFillStyle advGradient = new NAdvancedGradientFillStyle(); advGradient.BackgroundColor = Color.Black; advGradient.Points.Add(new NAdvancedGradientPoint(Color.White, 10, 10, 0, 100, AGPointShape.Circle)); radialGauge.BackgroundFillStyle = advGradient; radialGauge.SweepAngle = 360; radialGauge.BeginAngle = -90; nChartControl1.Panels.Add(radialGauge); NGaugeAxis axis = (NGaugeAxis)radialGauge.Axes[0]; axis.Range = new NRange1DD(0, 60); axis.Anchor.RulerOrientation = RulerOrientation.Right; axis.Anchor = new NDockGaugeAxisAnchor(GaugeAxisDockZone.Top, true, RulerOrientation.Right, 0, 100); NLinearScaleConfigurator scale = (NLinearScaleConfigurator)axis.ScaleConfigurator; NScaleStripStyle stripStyle = new NScaleStripStyle(new NColorFillStyle(Color.FromArgb(20, Color.LightGray)), null, true, 0, 0, 1, 1); stripStyle.SetShowAtWall(ChartWallType.Back, true); stripStyle.Interlaced = true; scale.StripStyles.Add(stripStyle); scale.MinorTickCount = 4; scale.MajorTickMode = MajorTickMode.CustomStep; scale.CustomStep = 5.0f; scale.SetPredefinedScaleStyle(PredefinedScaleStyle.Watch); scale.OuterMajorTickStyle.FillStyle = new NGradientFillStyle(Color.White, Color.Beige); scale.OuterMajorTickStyle.LineStyle = new NStrokeStyle(Color.DarkGray); scale.OuterMajorTickStyle.Length = new NLength(14); scale.RulerStyle.FillStyle = new NColorFillStyle(Color.FromArgb(50, Color.Silver)); scale.RulerStyle.BorderStyle = new NStrokeStyle(Color.Beige); axis.UpdateScale(); axis.SynchronizeScaleWithConfigurator = false; NTextStyle textStyle1 = new NTextStyle(); textStyle1.FillStyle = new NColorFillStyle(Color.White); textStyle1.BorderStyle = new NStrokeStyle(1, Color.Beige); textStyle1.FontStyle.Style = System.Drawing.FontStyle.Bold; textStyle1.FontStyle.EmSize = new NLength(22); NScaleLabelAngle angle = new NScaleLabelAngle(ScaleLabelAngleMode.Scale, 0); NTextStyle textStyle2 = new NTextStyle(); textStyle2.FillStyle = new NColorFillStyle(Color.White); textStyle2.BorderStyle = new NStrokeStyle(1, Color.Beige); textStyle2.FontStyle.Style = System.Drawing.FontStyle.Bold; textStyle2.FontStyle.EmSize = new NLength(12); NCustomScaleDecorator customDecorator = new NCustomScaleDecorator(); NValueScaleLabelStyle style1 = new NValueScaleLabelStyle(textStyle1, ContentAlignment.MiddleCenter, angle, new NLength(0)); NValueScaleLabelStyle style2 = new NValueScaleLabelStyle(textStyle2, ContentAlignment.MiddleCenter, angle, new NLength(0)); for (int i = 12; i > 0; i--) { string text = NSystem.IntToRoman(i); NValueScaleLabel hourLabel; if (i % 3 == 0) { hourLabel = new NValueScaleLabel(new NScaleValueDecorationAnchor(i * 5), text, (NValueScaleLabelStyle)style1.Clone()); } else { hourLabel = new NValueScaleLabel(new NScaleValueDecorationAnchor(i * 5), text, (NValueScaleLabelStyle)style2.Clone()); } customDecorator.Decorations.Add(hourLabel); } NScaleLevel textLevel = (NScaleLevel)axis.Scale.Levels[1]; textLevel.Decorators.Clear(); textLevel.Decorators.Add(customDecorator); m_HoursArrow = new NNeedleValueIndicator(); m_HoursArrow.Value = 79; m_HoursArrow.Shape.FillStyle = new NGradientFillStyle(GradientStyle.Horizontal, GradientVariant.Variant1, Color.White, Color.Red); m_HoursArrow.Shape.StrokeStyle.Color = Color.Red; m_HoursArrow.OffsetOriginMode = IndicatorOffsetOriginMode.ScaleEnd; m_HoursArrow.OffsetFromScale = new NLength(30); m_HoursArrow.Width = new NLength(8); radialGauge.Indicators.Add(m_HoursArrow); m_MinituesArrow = new NNeedleValueIndicator(); m_MinituesArrow.Value = 79; m_MinituesArrow.Shape.FillStyle = new NGradientFillStyle(GradientStyle.Horizontal, GradientVariant.Variant1, Color.White, Color.Red); m_MinituesArrow.Shape.StrokeStyle.Color = Color.Red; m_MinituesArrow.OffsetOriginMode = IndicatorOffsetOriginMode.ScaleEnd; m_MinituesArrow.OffsetFromScale = new NLength(30); m_MinituesArrow.Width = new NLength(5); radialGauge.Indicators.Add(m_MinituesArrow); m_SecondsArrow = new NNeedleValueIndicator(); m_SecondsArrow.Value = 79; m_SecondsArrow.Shape.FillStyle = new NGradientFillStyle(GradientStyle.Horizontal, GradientVariant.Variant1, Color.White, Color.Red); m_MinituesArrow.OffsetOriginMode = IndicatorOffsetOriginMode.ScaleEnd; m_SecondsArrow.Shape.StrokeStyle.Color = Color.Red; m_SecondsArrow.OffsetFromScale = new NLength(10); m_SecondsArrow.Width = new NLength(1); radialGauge.Indicators.Add(m_SecondsArrow); //nChartControl1.AutoRefresh = true; SynchronizeWithTime(); m_Timer = new DispatcherTimer(); m_Timer.Interval = new TimeSpan(1000); m_Timer.Tick += m_Timer_Tick; m_Timer.IsEnabled = true; m_Timer.Start(); }
protected override NWidget CreateExampleContent() { NMemoryDataTable dataTable = new NMemoryDataTable( new NFieldInfo("Company", typeof(String)), new NFieldInfo("RegionSales", typeof(Double[]))); Random rnd = new Random(); for (int i = 0; i < 1000; i++) { Double[] arr = new Double[10]; for (int j = 0; j < 10; j++) { arr[j] = rnd.Next(100); } dataTable.AddRow(NDummyDataSource.RandomCompanyName(), arr); } // create a view and get its grid NTableGridView view = new NTableGridView(); NTableGrid grid = view.Grid; grid.AutoCreateColumn += delegate(NAutoCreateColumnEventArgs arg) { if (arg.DataColumn.FieldName == "RegionSales") { NCustomColumnFormat pieColumnFormat = new NCustomColumnFormat(); pieColumnFormat.FormatDefaultDataCellDelegate = delegate(NDataCell theDataCell) { NWidget widget = new NWidget(); widget.PreferredSize = new NSize(400, 300); }; pieColumnFormat.CreateValueDataCellViewDelegate = delegate(NDataCell theDataCell, object value) { double[] values = (double[])value; NChartView chartView = new NChartView(); chartView.PreferredSize = new NSize(300, 60); NCartesianChart cartesianChart = new NCartesianChart(); NDockLayout.SetDockArea(cartesianChart, ENDockArea.Center); chartView.Surface.Content = cartesianChart; cartesianChart.SetPredefinedCartesianAxes(ENPredefinedCartesianAxis.XOrdinalYLinear); cartesianChart.Legend = null; cartesianChart.Axes[ENCartesianAxis.PrimaryX].Visible = false; NCartesianAxis yAxis = cartesianChart.Axes[ENCartesianAxis.PrimaryY]; NValueScaleLabelStyle labelStyle = new NValueScaleLabelStyle(); labelStyle.TextStyle.Font = new NFont("Arimo", 8); ((NLinearScale)yAxis.Scale).Labels.Style = labelStyle; NBarSeries barSeries = new NBarSeries(); barSeries.DataLabelStyle = new NDataLabelStyle(false); barSeries.InflateMargins = false; cartesianChart.Series.Add(barSeries); int count = values.Length; for (int i = 0; i < count; i++) { barSeries.DataPoints.Add(new NBarDataPoint(values[i])); } return(chartView); }; arg.DataColumn.Format = pieColumnFormat; } }; grid.DataSource = new NDataSource(dataTable); return(view); }