Infragistics UltraDataChart Control has been engineered to dramatically simplify the way in which you visually present information to your end-users. Optimized for both performance and flexibility, the WinForms DataChart is a highly customizable control library which can be leveraged in a nearly endless number of business scenarios, be it real-time charting or analysis of multi-dimensional data.
The updated Windows Forms Data Chart is fast, fully-featured, and arguably the most modern Windows Forms chart on the market. Smoothly animate data over time using the innovative Motion Framework, create composite charts, and use multiple series, featuring a range of series that include Line, Stacked Line, Stacked Area, Stacked 100-Bar, Column, Waterfall, Candlestick and more.
Using the UltraDataChart
The UltraDataChart offers powerful ways to interact with data, such as zooming, trendlines and chart synchronization. In addition to all the types supported by the XamChart, UltraDataChart supports polar and radial series types. It enables developers to not only visualize the data, but also enable users to interact with it. The UltraDataChart only supports 2D chart types, and chart types which do not require an axis, such as a pie, and funnel will be implemented by separate controls like the Pie Chart, Funnel Chart etc.
How do you use the UltraDataChart
- Declare the axes (the UltraDataChart supports string (CategoryXAxis, CategoryYAxis, CategoryAngleAxis), numeric (NumericXAxis, NumericYAxis, NumericRadiusAxis, NumericAngleAxis), and date (CategoryDateTimeAxis). In this case we’d like to have dates along the X axis, and numeric values along the Y axis, so we’re using the CategoryDateTimeXAxis and the NumericYAxis.
- Declare the series, referencing the two axes
- Declare tooltips
Infragistics Windows Forms UltraDataChart High Performance Scenarios
When you’re dealing with real-time or large volumes of data, the three most critical factors for the user experience of your application are performance, performance and…performance! Customers are often interested in the performance of the UltraDataChart (the fast chart component featuring zooming and panning in Infragistics Windows Forms controls). Rather than just say “well, they’re capable of handling millisecond-based updates without noticeable delay in rendering, and are in use at mission-critical applications handling real-time and high-volume data", let's see the chart in action in a few different high performance scenarios!
UltraDataChart real-time data scenario
This scenario shows the UltraDataChart bound to a real-time data feed. You can start or stop the real-time data feed by clicking the Toggle Live Data button, and can modify the speed of data update and the amount of data displayed in the chart control using the two sliders above. You can see the time it takes to layout the points in the chart in the label above it, just so you can get an idea of how fast the UltraDataChart really is.
The source code is available below:
1:using System;
2:using System.Collections;
3:using System.Collections.Generic;
4:using System.Collections.ObjectModel;
5:using System.Drawing;
6:using System.Globalization;
7:using System.Linq;
8:using System.Windows.Forms;
9:using Infragistics.Controls.Charts;
10:using Infragistics.Extension.Models;
11:using Infragistics.Extension.Services;
12:using Infragistics.Win.DataVisualization;
13:using HorizontalAlignment = Infragistics.Portable.Components.UI.HorizontalAlignment;
14:
15:namespace Infragistics.Samples
16: {
17:publicpartialclass SampleForm : Form
18: {
19:#region Default constructor
20:public SampleForm()
21: {
22: InitializeComponent();
23: Load += OnFormLoaded;
24: btnReset.Click += btnReset_Click;
25: }
26:#endregion// Default constructor
27:
28:#region Protected Members
29:protected DataStockService StockService;
30:protected UltraDataChart PriceChart;
31:protected UltraDataChart VolumeChart;
32:#endregion// Protected Members
33:
34:#region Events
35:
36:#region OnFormLoaded
37:privatevoid OnFormLoaded(object sender, EventArgs e)
38: {
39: InitializeForm();
40:
41: StockService = new DataStockService();
42: StockService.DataStockReceived += StockService_DataStockReceived;
43:
44: var data = StockService.DataPoints;
45:
46: PriceChart = CreatePriceChart(data);
47: VolumeChart = CreateVolumeChart(data);
48:
49: var table = new TableLayoutPanel
50: {
51: Dock = DockStyle.Fill,
52: AutoSizeMode = AutoSizeMode.GrowOnly,
53: GrowStyle = TableLayoutPanelGrowStyle.AddRows
54: };
55: table.Controls.Add(PriceChart, 0, 1);
56: table.Controls.Add(VolumeChart, 0, 2);
57:
58: PanelCenter.ClientArea.Controls.Add(table);
59: }
60:#endregion// OnFormLoaded
61:
62:#region btnReset_Click
63:void btnReset_Click(object sender, EventArgs e)
64: {
65: PriceChart.ResetZoom();
66: VolumeChart.ResetZoom();
67: }
68:#endregion// btnReset_Click
69:
70:#region StockService_DataStockReceived
71:void StockService_DataStockReceived(object sender, DataStockReceivedEventArgs e)
72: {
73://var data = StockService.DataPoints;
74: var data = new DataStockList();
75: data.AddRange(StockService.DataPoints);
76:
77: UpdatePriceChart(data);
78: UpdateVolumeChart(data);
79: }
80:#endregion// StockService_DataStockReceived
81:
82:#region OnAxisXFormatLabel
83:string OnAxisXFormatLabel(AxisLabelInfo info)
84: {
85: var item = info.Item as DataStockPoint;
86:if (item != null) return item.Date.ToString("yyyy/MM/dd");
87:
88:return info.ToString();
89: }
90:#endregion// OnAxisXFormatLabel
91:
92:#region OnAxisYFormatLabel
93:string OnAxisYFormatLabel(AxisLabelInfo info)
94: {
95: var axisValue = info.Value;
96:if (axisValue < 1000)
97:returnstring.Format("{0:0.#}", axisValue);
98:if (axisValue < 1000000)
99:returnstring.Format("{0:#,0,.#} K", axisValue);
100:if (axisValue < 1000000000)
101:returnstring.Format("{0:#,0,,.#} M", axisValue);
102:if (axisValue < 1000000000000)
103:returnstring.Format("{0:#,0,,,.#} B", axisValue);
104:
105:return axisValue.ToString();
106: }
107:#endregion// OnAxisYFormatLabel
108:
109:#endregion
110:
111:#region Methods
112:
113:#region InitializeForm
114:publicvoid InitializeForm()
115: {
116: speedEditor.ValueChanged += speedEditor_ValueChanged;
117: btnStartService.Click += btnStartService_Click;
118:
119:// Add the form's caption as the sample name
120: ultraFormManager1.FormStyleSettings.Caption = Properties.Resources.SampleTitle;
121:
122:// Add button images on the form
123:this.LoadImagesFor(SplitterTop, SplitterRight);
124:
125:// Add the sample description
126: sampleInfo.SampleDescription = Resources.SamplesBrowser.SamplesBrowser.SampleDescription;
127: sampleInfo.SampleCodeCSharp = Properties.Resources.CS_CodeView;
128: sampleInfo.SampleCodeVBasic = Properties.Resources.VB_CodeView;
129: sampleInfo.SampleTitle = Properties.Resources.CodeViewerTitle;
130:
131: speedEditor.PropertyName = Properties.Resources.SpeedEditor_Label;
132: }
133:#endregion// InitializeForm
134:
135:#region CreatePriceChart
136:public UltraDataChart CreatePriceChart(DataStockList data)
137: {
138: var chart = new UltraDataChart
139: {
140: Width = 400,
141: Height = 200,
142: Dock = DockStyle.Fill,
143: BackColor = System.Drawing.Color.White,
144: PlotAreaBackground = new SolidColorBrush { Color = Color.White },
145: Title = data.CompanyName,
146: Subtitle = Properties.Resources.StockPrice,
147: VerticalZoomable = true,
148: HorizontalZoomable = true
149: };
150:
151: var xAxis = new CategoryXAxis
152: {
153: Label = "Date",
154: DataSource = data,
155: LabelLocation = AxisLabelsLocation.OutsideBottom,
156: UseClusteringMode = true
157: };
158: xAxis.FormatLabel += OnAxisXFormatLabel;
159:
160: var yAxis = new NumericYAxis
161: {
162: LabelExtent = 50,
163: LabelHorizontalAlignment = HorizontalAlignment.Right
164: };
165: yAxis.FormatLabel += OnAxisYFormatLabel;
166:
167: var yAxis2 = new NumericYAxis
168: {
169: LabelExtent = 20,
170: LabelLocation = AxisLabelsLocation.OutsideRight
171: };
172:
173: var series = new AreaSeries
174: {
175: DataSource = data,
176: ValueMemberPath = "Open",
177: XAxis = xAxis,
178: YAxis = yAxis,
179: MarkerType = MarkerType.None,
180: IsHighlightingEnabled = true
181: };
182:
183: chart.Axes.Add(xAxis);
184: chart.Axes.Add(yAxis);
185: chart.Axes.Add(yAxis2);
186: chart.Series.Add(series);
187:return chart;
188: }
189:#endregion// CreatePriceChart
190:
191:#region CreateVolumeChart
192:public UltraDataChart CreateVolumeChart(DataStockList data)
193: {
194: var chart = new UltraDataChart
195: {
196: BackColor = System.Drawing.Color.White,
197: PlotAreaBackground = new SolidColorBrush { Color = Color.White },
198: Dock = DockStyle.Fill,
199: Width = 400,
200: Height = 200,
201: Padding = new Padding(0, 0, 20, 0),
202: Subtitle = Properties.Resources.StockVolume,
203: VerticalZoomable = true,
204: HorizontalZoomable = true
205: };
206:
207: var xAxis = new CategoryXAxis
208: {
209: Label = "Date",
210: DataSource = data,
211: LabelLocation = AxisLabelsLocation.OutsideBottom
212: };
213: xAxis.FormatLabel += OnAxisXFormatLabel;
214:
215: var yAxis = new NumericYAxis
216: {
217: LabelExtent = 50,
218: LabelHorizontalAlignment = HorizontalAlignment.Right
219: };
220: yAxis.FormatLabel += OnAxisYFormatLabel;
221:
222: var yAxis2 = new NumericYAxis
223: {
224: LabelExtent = 20,
225: LabelLocation = AxisLabelsLocation.OutsideRight
226: };
227:
228: var series = new ColumnSeries
229: {
230: DataSource = data,
231: ValueMemberPath = "Volume",
232: XAxis = xAxis,
233: YAxis = yAxis,
234: IsHighlightingEnabled = true,
235: IsTransitionInEnabled = false
236: };
237:
238: chart.Axes.Add(xAxis);
239: chart.Axes.Add(yAxis);
240: chart.Axes.Add(yAxis2);
241: chart.Series.Add(series);
242:return chart;
243: }
244:#endregion// CreateVolumeChart
245:
246:#region UpdatePriceChart
247:privatevoid UpdatePriceChart(IEnumerable data)
248: {
249: var DataSource = data asobject[] ?? data.Cast<object>().ToArray();
250:
251: var series = PriceChart.Series.FirstOrDefault();
252:if (series != null)
253: {
254: series.DataSource = DataSource;
255: series.RenderSeries(false);
256: }
257:
258: var xAxis = PriceChart.Axes[0] as CategoryXAxis;
259:if (xAxis != null)
260: {
261: xAxis.DataSource = DataSource;
262: xAxis.RenderAxis();
263: }
264: }
265:#endregion// UpdatePriceChart
266:
267:#region UpdateVolumeChart
268:privatevoid UpdateVolumeChart(IEnumerable data)
269: {
270: var DataSource = data asobject[] ?? data.Cast<object>().ToArray();
271:
272: var series = VolumeChart.Series.FirstOrDefault();
273:if (series != null)
274: {
275: series.DataSource = DataSource;
276: series.RenderSeries(false);
277: }
278:
279: var xAxis = VolumeChart.Axes[0] as CategoryXAxis;
280:if (xAxis != null)
281: {
282: xAxis.DataSource = DataSource;
283: xAxis.RenderAxis();
284: }
285: }
286:#endregion// UpdateVolumeChart
287:
288:#region speedEditor_ValueChanged
289:void speedEditor_ValueChanged(object sender, EventArgs e)
290: {
291: var value = speedEditor.PropertyValue;
292: StockService.UpdateInterval = TimeSpan.FromMilliseconds(value);
293: }
294:#endregion// speedEditor_ValueChanged
295:
296:#region btnStartService_Click
297:void btnStartService_Click(object sender, EventArgs e)
298: {
299:if (StockService.IsEnabled)
300: StockService.Stop();
301:else
302: StockService.Start();
303: }
304:#endregion// btnStartService_Click
305:
306:#endregion// Methods
307: }
308:
309:#region StockInformation class
310:publicclass StockInformation
311: {
312:publicstring CompanyName;
313:publicstring StockSymbol;
314: }
315:#endregion// StockInformation class
316: }
UltraDataChart high-volume data scenario
The UltraDataChart high-volume data scenario allows the user to set the number of points to be bound to the chart control. You can use big amount of data - this chart can fit more than a year’s worth of data readings taken each second - but feel free to increase that according to the requirements of your scenario. You can try the zooming and panning using the mouse and zoombars to see the level of performance this component delivers when bound to such a high-volume dataset.
When changing only one or two points in data that is bound to the Series object’s DataSource property, you should avoid sending the Reset event from the INotifyCollectionChanged interface. In the prior version of the UltraDataChart control, sending one refresh event instead of several smaller events was preferable.
This code snippet shows how to notify about changes in custom collection using the Add event action instead of the Reset event action when a new data point is added to the collection.
1:using System.Collections;
2:using System.Collections.Generic;
3:using System.Collections.Specialized;
4:using NotifyEventArgs = System.Collections.Specialized.NotifyCollectionChangedEventArgs;
5:using NotifyAction = System.Collections.Specialized.NotifyCollectionChangedAction;
6:
7:publicclass DataCollection : INotifyCollectionChanged, IEnumerable
8: {
9:protected List Data = new List();
10:publicevent NotifyCollectionChangedEventHandler CollectionChanged;
11:protectedvoid OnCollectionChanged(NotifyEventArgs e)
12: {
13:if (CollectionChanged != null)
14: {
15: CollectionChanged(this, e);
16: }
17: }
18:public IEnumerator GetEnumerator()
19: {
20:returnthis.Data.GetEnumerator();
21: }
22:publicvoid Add(DataPoint dataPoint)
23: {
24:this.Data.Add(dataPoint);
25: NotifyEventArgs e = new NotifyEventArgs(NotifyAction.Add, dataPoint);
26:// use the Add event action instead of the Reset event action
27:// when adding only one or two points to the collection
28://NotifyEventArgs e = new NotifyEventArgs(NotifyAction.Reset);
29:this.OnCollectionChanged(e);
30: }
31: }
Motion Framework
You can animate data over time using the innovative Motion Framework, create composite charts, and use multiple series with our new Windows Forms Data Chart control. This approach is used mainly when you have multidimensional data and one of the dimensions is time. You can demonstrate how values are changed during the time using awesome animations.
This sample demonstrates how to use the Motion Framework™ with the DataChart control to build highly engaging visualizations and provide smooth playback of changes in data over time.
1:using Infragistics.Extension;
2:
3:namespace Infragistics.Samples
4: {
5:partialclass MotionFramework
6: {
7:///
8:/// Required designer variable.
9:///
10:private System.ComponentModel.IContainer components = null;
11:
12:///
13:/// Clean up any resources being used.
14:///
15:///true if managed resources should be disposed; otherwise, false.
16:protectedoverridevoid Dispose(bool disposing)
17: {
18:if (disposing && (components != null))
19: {
20: components.Dispose();
21: }
22:base.Dispose(disposing);
23: }
24:
25:#region Windows Form Designer generated code
26:
27:///
28:/// Required method for Designer support - do not modify
29:/// the contents of this method with the code editor.
30:///
31:privatevoid InitializeComponent()
32: {
33:this.components = new System.ComponentModel.Container();
34: System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MotionFramework));
35:this.ultraFormManager1 = new Infragistics.Win.UltraWinForm.UltraFormManager(this.components);
36:this._CardView_UltraFormManager_Dock_Area_Left = new Infragistics.Win.UltraWinForm.UltraFormDockArea();
37:this._CardView_UltraFormManager_Dock_Area_Right = new Infragistics.Win.UltraWinForm.UltraFormDockArea();
38:this._CardView_UltraFormManager_Dock_Area_Top = new Infragistics.Win.UltraWinForm.UltraFormDockArea();
39:this._CardView_UltraFormManager_Dock_Area_Bottom = new Infragistics.Win.UltraWinForm.UltraFormDockArea();
40:this.MainPanel = new Infragistics.Win.Misc.UltraPanel();
41:this.PanelCenter = new Infragistics.Win.Misc.UltraPanel();
42:this.SplitterRight = new Infragistics.Win.Misc.UltraSplitter();
43:this.PanelRight = new Infragistics.Win.Misc.UltraPanel();
44:this.btnToggleAnimation = new Infragistics.Win.Misc.UltraButton();
45:this.SplitterTop = new Infragistics.Win.Misc.UltraSplitter();
46:this.PanelTop = new Infragistics.Win.Misc.UltraPanel();
47:this.sampleInfo = new Infragistics.Extension.SampleInfoControl();
48: ((System.ComponentModel.ISupportInitialize)(this.ultraFormManager1)).BeginInit();
49:this.MainPanel.ClientArea.SuspendLayout();
50:this.MainPanel.SuspendLayout();
51:this.PanelCenter.SuspendLayout();
52:this.PanelRight.ClientArea.SuspendLayout();
53:this.PanelRight.SuspendLayout();
54:this.PanelTop.ClientArea.SuspendLayout();
55:this.PanelTop.SuspendLayout();
56:this.SuspendLayout();
57://
58:// ultraFormManager1
59://
60:this.ultraFormManager1.Form = this;
61:this.ultraFormManager1.FormStyleSettings.FormDisplayStyle = Infragistics.Win.UltraWinToolbars.FormDisplayStyle.StandardWithRibbon;
62:this.ultraFormManager1.UseOsThemes = Infragistics.Win.DefaultableBoolean.False;
63://
64:// _CardView_UltraFormManager_Dock_Area_Left
65://
66:this._CardView_UltraFormManager_Dock_Area_Left.AccessibleRole = System.Windows.Forms.AccessibleRole.Grouping;
67:this._CardView_UltraFormManager_Dock_Area_Left.BackColor = System.Drawing.SystemColors.Control;
68:this._CardView_UltraFormManager_Dock_Area_Left.DockedPosition = Infragistics.Win.UltraWinForm.DockedPosition.Left;
69:this._CardView_UltraFormManager_Dock_Area_Left.ForeColor = System.Drawing.SystemColors.ControlText;
70:this._CardView_UltraFormManager_Dock_Area_Left.FormManager = this.ultraFormManager1;
71:this._CardView_UltraFormManager_Dock_Area_Left.InitialResizeAreaExtent = 8;
72: resources.ApplyResources(this._CardView_UltraFormManager_Dock_Area_Left, "_CardView_UltraFormManager_Dock_Area_Left");
73:this._CardView_UltraFormManager_Dock_Area_Left.Name = "_CardView_UltraFormManager_Dock_Area_Left";
74://
75:// _CardView_UltraFormManager_Dock_Area_Right
76://
77:this._CardView_UltraFormManager_Dock_Area_Right.AccessibleRole = System.Windows.Forms.AccessibleRole.Grouping;
78:this._CardView_UltraFormManager_Dock_Area_Right.BackColor = System.Drawing.SystemColors.Control;
79:this._CardView_UltraFormManager_Dock_Area_Right.DockedPosition = Infragistics.Win.UltraWinForm.DockedPosition.Right;
80:this._CardView_UltraFormManager_Dock_Area_Right.ForeColor = System.Drawing.SystemColors.ControlText;
81:this._CardView_UltraFormManager_Dock_Area_Right.FormManager = this.ultraFormManager1;
82:this._CardView_UltraFormManager_Dock_Area_Right.InitialResizeAreaExtent = 8;
83: resources.ApplyResources(this._CardView_UltraFormManager_Dock_Area_Right, "_CardView_UltraFormManager_Dock_Area_Right");
84:this._CardView_UltraFormManager_Dock_Area_Right.Name = "_CardView_UltraFormManager_Dock_Area_Right";
85://
86:// _CardView_UltraFormManager_Dock_Area_Top
87://
88:this._CardView_UltraFormManager_Dock_Area_Top.AccessibleRole = System.Windows.Forms.AccessibleRole.Grouping;
89:this._CardView_UltraFormManager_Dock_Area_Top.BackColor = System.Drawing.SystemColors.Control;
90:this._CardView_UltraFormManager_Dock_Area_Top.DockedPosition = Infragistics.Win.UltraWinForm.DockedPosition.Top;
91:this._CardView_UltraFormManager_Dock_Area_Top.ForeColor = System.Drawing.SystemColors.ControlText;
92:this._CardView_UltraFormManager_Dock_Area_Top.FormManager = this.ultraFormManager1;
93: resources.ApplyResources(this._CardView_UltraFormManager_Dock_Area_Top, "_CardView_UltraFormManager_Dock_Area_Top");
94:this._CardView_UltraFormManager_Dock_Area_Top.Name = "_CardView_UltraFormManager_Dock_Area_Top";
95://
96:// _CardView_UltraFormManager_Dock_Area_Bottom
97://
98:this._CardView_UltraFormManager_Dock_Area_Bottom.AccessibleRole = System.Windows.Forms.AccessibleRole.Grouping;
99:this._CardView_UltraFormManager_Dock_Area_Bottom.BackColor = System.Drawing.SystemColors.Control;
100:this._CardView_UltraFormManager_Dock_Area_Bottom.DockedPosition = Infragistics.Win.UltraWinForm.DockedPosition.Bottom;
101:this._CardView_UltraFormManager_Dock_Area_Bottom.ForeColor = System.Drawing.SystemColors.ControlText;
102:this._CardView_UltraFormManager_Dock_Area_Bottom.FormManager = this.ultraFormManager1;
103:this._CardView_UltraFormManager_Dock_Area_Bottom.InitialResizeAreaExtent = 8;
104: resources.ApplyResources(this._CardView_UltraFormManager_Dock_Area_Bottom, "_CardView_UltraFormManager_Dock_Area_Bottom");
105:this._CardView_UltraFormManager_Dock_Area_Bottom.Name = "_CardView_UltraFormManager_Dock_Area_Bottom";
106://
107:// MainPanel
108://
109://
110:// MainPanel.ClientArea
111://
112:this.MainPanel.ClientArea.Controls.Add(this.PanelCenter);
113:this.MainPanel.ClientArea.Controls.Add(this.SplitterRight);
114:this.MainPanel.ClientArea.Controls.Add(this.PanelRight);
115:this.MainPanel.ClientArea.Controls.Add(this.SplitterTop);
116:this.MainPanel.ClientArea.Controls.Add(this.PanelTop);
117: resources.ApplyResources(this.MainPanel, "MainPanel");
118:this.MainPanel.Name = "MainPanel";
119://
120:// PanelCenter
121://
122:this.PanelCenter.BorderStyle = Infragistics.Win.UIElementBorderStyle.None;
123: resources.ApplyResources(this.PanelCenter, "PanelCenter");
124:this.PanelCenter.Name = "PanelCenter";
125://
126:// SplitterRight
127://
128:this.SplitterRight.BackColor = System.Drawing.SystemColors.Control;
129: resources.ApplyResources(this.SplitterRight, "SplitterRight");
130:this.SplitterRight.Name = "SplitterRight";
131:this.SplitterRight.RestoreExtent = 250;
132://
133:// PanelRight
134://
135:this.PanelRight.AutoScroll = true;
136:this.PanelRight.BorderStyle = Infragistics.Win.UIElementBorderStyle.None;
137://
138:// PanelRight.ClientArea
139://
140:this.PanelRight.ClientArea.Controls.Add(this.btnToggleAnimation);
141: resources.ApplyResources(this.PanelRight, "PanelRight");
142:this.PanelRight.Name = "PanelRight";
143://
144:// btnToggleAnimation
145://
146: resources.ApplyResources(this.btnToggleAnimation, "btnToggleAnimation");
147:this.btnToggleAnimation.Name = "btnToggleAnimation";
148:this.btnToggleAnimation.ShowFocusRect = false;
149://
150:// SplitterTop
151://
152:this.SplitterTop.BackColor = System.Drawing.SystemColors.Control;
153: resources.ApplyResources(this.SplitterTop, "SplitterTop");
154:this.SplitterTop.Name = "SplitterTop";
155:this.SplitterTop.RestoreExtent = 100;
156://
157:// PanelTop
158://
159:this.PanelTop.BorderStyle = Infragistics.Win.UIElementBorderStyle.None;
160://
161:// PanelTop.ClientArea
162://
163:this.PanelTop.ClientArea.Controls.Add(this.sampleInfo);
164: resources.ApplyResources(this.PanelTop, "PanelTop");
165:this.PanelTop.Name = "PanelTop";
166:this.PanelTop.Tag = "Top";
167://
168:// sampleInfo
169://
170: resources.ApplyResources(this.sampleInfo, "sampleInfo");
171:this.sampleInfo.BackColor = System.Drawing.Color.Transparent;
172:this.sampleInfo.Name = "sampleInfo";
173:this.sampleInfo.SampleCodeCSharp = resources.GetString("sampleInfo.SampleCodeCSharp");
174:this.sampleInfo.SampleCodeVBasic = null;
175:this.sampleInfo.SampleDescription = null;
176:this.sampleInfo.SampleTitle = "Code Viewer";
177://
178:// MotionFramework
179://
180: resources.ApplyResources(this, "$this");
181:this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
182:this.Controls.Add(this.MainPanel);
183:this.Controls.Add(this._CardView_UltraFormManager_Dock_Area_Left);
184:this.Controls.Add(this._CardView_UltraFormManager_Dock_Area_Right);
185:this.Controls.Add(this._CardView_UltraFormManager_Dock_Area_Top);
186:this.Controls.Add(this._CardView_UltraFormManager_Dock_Area_Bottom);
187:this.Name = "MotionFramework";
188: ((System.ComponentModel.ISupportInitialize)(this.ultraFormManager1)).EndInit();
189:this.MainPanel.ClientArea.ResumeLayout(false);
190:this.MainPanel.ResumeLayout(false);
191:this.PanelCenter.ResumeLayout(false);
192:this.PanelRight.ClientArea.ResumeLayout(false);
193:this.PanelRight.ResumeLayout(false);
194:this.PanelTop.ClientArea.ResumeLayout(false);
195:this.PanelTop.ClientArea.PerformLayout();
196:this.PanelTop.ResumeLayout(false);
197:this.ResumeLayout(false);
198:
199: }
200:
201:#endregion
202:
203:private Infragistics.Win.UltraWinForm.UltraFormManager ultraFormManager1;
204:private Infragistics.Win.UltraWinForm.UltraFormDockArea _CardView_UltraFormManager_Dock_Area_Left;
205:private Infragistics.Win.UltraWinForm.UltraFormDockArea _CardView_UltraFormManager_Dock_Area_Right;
206:private Infragistics.Win.UltraWinForm.UltraFormDockArea _CardView_UltraFormManager_Dock_Area_Top;
207:private Infragistics.Win.UltraWinForm.UltraFormDockArea _CardView_UltraFormManager_Dock_Area_Bottom;
208:private Infragistics.Win.Misc.UltraPanel MainPanel;
209:private Infragistics.Win.Misc.UltraSplitter SplitterTop;
210:private Infragistics.Win.Misc.UltraPanel PanelTop;
211:private Infragistics.Win.Misc.UltraSplitter SplitterRight;
212:private Infragistics.Win.Misc.UltraPanel PanelRight;
213:private Infragistics.Win.Misc.UltraPanel PanelCenter;
214:private SampleInfoControl sampleInfo;
215:private Win.Misc.UltraButton btnToggleAnimation;
216: }
217: }
Summary
The UltraDataChart is a powerful charting control, enabling users to browse and interact with data in a much richer way using zooming, inter-chart synchronization and tooltips. With a variety of series types and built-in trendlines, it’s fully capable of handing your charting scenarios. Talk to users of your applications and ask them where they can benefit from browsing their data in a visual way.
The Infragistics Windows Forms Data Visualization controls also offer a wide range of options to create almost any dashboard that you need. In this post we discussed how to use Infragistics UltraDataChart , but you can see samples of how to use any of other data visualization components on the Infragistics Windows Forms Samples Browser. There, you'll find detailed information about the control and its features and how to configure its separate parts in the API documentation as well as the online help documentation.
To play around with the Infragistics Windows Forms dashboards on your own, be sure to get Infragistics Ultimate and see the chart in action in our latest sample application by clicking the banner below!