4.
5. In the Form_Load, populate a generic List of Sales objects:
[VB] The Sales Class Definition
Public Class Sales
Public Sub New(ByVal year As IntegerByVal quarter As IntegerByVal value As
Double)
Year = year
Quarter = quarter
Value = value
End Sub
Public Property Year() As Integer
Get
End Get
Set
End Set
End Property
Public Property Quarter() As Integer
Get
End Get
Set
End Set
End Property
Public Property Value() As Double
Get
End Get
Set
End Set
End Property
End Class
[C#] The Sales Class Definition
public class Sales
{
public Sales(int year, int quarter, double value)
{
Year = year;
Quarter = quarter;
Value = value;
}
public int Year { get; set; }
public int Quarter { get; set; }
public double Value { get; set; }
}
[VB] Populate and Group Chart Data
Protected Sub Form1_Load(ByVal sender As ObjectByVal e As EventArgs)
' Populate the generic list of Sales
Dim sales As New List(Of Sales)()
sales.Add(New Sales(2007, 1, 5))
sales.Add(New Sales(2007, 2, 2))
sales.Add(New Sales(2007, 3, 3))
sales.Add(New Sales(2007, 4, 1))
sales.Add(New Sales(2008, 1, 4))
sales.Add(New Sales(2008, 2, 3))
sales.Add(New Sales(2008, 3, 8))
sales.Add(New Sales(2008, 4, 2))
' Setup the chart appearance and title
RadControls for Winforms
483
RadControls for Winforms
Copy pages from pdf to new pdf - remove PDF pages in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Provides Users with Mature Document Manipulating Function for Deleting PDF Pages
add or remove pages from pdf; delete page numbers in pdf
Copy pages from pdf to new pdf - VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Visual Basic Sample Codes to Delete PDF Document Page in .NET
delete blank pages in pdf files; acrobat export pages from pdf
6. Press Ctl-F5 to run the application. Notice the two series, one for each year defined by the 
DataGroupColumn. Each year has four data points  
radChart1.Skin = "DeepBlue"
radChart1.ChartTitle.TextBlock.Text = "Sales Grouped by Quarter"
' Remove the default series
radChart1.Series.Clear()
' Create and add a new Bar series type
Dim chartSeries As New ChartSeries("Sales", ChartSeriesType.Bar)
radChart1.Series.Add(chartSeries)
' Set the grouping properties
radChart1.DataGroupColumn = "Year"
radChart1.Legend.Appearance.GroupNameFormat = "#NAME: #VALUE"
' bind the chart last to include the preceding property
' settings.
radChart1.DataSource = sales
End Sub
[C#] Populate and Group Chart Data
protected void Form1_Load(object sender, EventArgs e)
{
// Populate the generic list of Sales
List<Sales> sales = new List<Sales>();
sales.Add(new Sales(2007, 1, 5));
sales.Add(new Sales(2007, 2, 2));
sales.Add(new Sales(2007, 3, 3));
sales.Add(new Sales(2007, 4, 1));
sales.Add(new Sales(2008, 1, 4));
sales.Add(new Sales(2008, 2, 3));
sales.Add(new Sales(2008, 3, 8));
sales.Add(new Sales(2008, 4, 2));
// Setup the chart appearance and title
radChart1.Skin = "DeepBlue";
radChart1.ChartTitle.TextBlock.Text =
"Sales Grouped by Quarter";
// Remove the default series
radChart1.Series.Clear();
// Create and add a new Bar series type
ChartSeries chartSeries =
new ChartSeries("Sales", ChartSeriesType.Bar);
radChart1.Series.Add(chartSeries);
// Set the grouping properties
radChart1.DataGroupColumn = "Year";
radChart1.Legend.Appearance.GroupNameFormat = "#NAME: #VALUE";
// bind the chart last to include the preceding property
// settings.
radChart1.DataSource = sales;
}
RadControls for Winforms
484
RadControls for Winforms
C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net
Copy three pages from test1.pdf and paste into test2.pdf. PDFDocument pdf = new PDFDocument(@"C:\test1.pdf"); PDFDocument pdf2 = new PDFDocument(@"C:\test2
cut pages from pdf online; delete a page from a pdf in preview
VB.NET PDF Page Extract Library: copy, paste, cut PDF pages in vb.
' Copy three pages from test1.pdf and paste into test2.pdf. Dim pdf As PDFDocument = New PDFDocument("C:\test1.pdf") Dim pdf2 As PDFDocument = New PDFDocument
delete pages pdf document; delete page from pdf document
Displaying Date Time Values on Numeric Axes
One of the top most frequently asked questions is "how do I display date and time values along the axes"? The 
secret is in the DateTime ToAODate() method that converts a DateTime to a OLE Automation double value. Use 
the OLE Automation dates to populate axes. The steps for each axis:
Set the axis AutoScale property off so you can manually populate. 
Set the axis Appearance.ValueFormat using the ChartValueFormat enumeration. For example, you can use 
the ShortDate or ShortTime to format the axis. 
Add a range of DateTime values, being careful to convert them with the ToAODate() method. 
Here's a short code example that labels the XAxis with a series of dates:
Here's a slightly longer example that shows a gantt chart with a series of dates on the X axis and a series of 
times on the Y axis.
Use the axis DataLabelColumn property to add meaningful labels to the data across the bottom of 
this chart. If we had a property/column "QuarterDescription" with values "Qtr 1", "Qtr 2"..., these 
could be used in place of the number 1, 2...
[VB] Adding a Range of Dates
radChart1.PlotArea.XAxis.AutoScale = False
radChart1.PlotArea.XAxis.Appearance.ValueFormat = ChartValueFormat.ShortDate
radChart1.PlotArea.XAxis.AddRange(today.ToOADate(), today.AddDays(10).ToOADate(), 1) 
[C#] Adding a Range of Dates
radChart1.PlotArea.XAxis.AutoScale = false;
radChart1.PlotArea.XAxis.Appearance.ValueFormat = ChartValueFormat.ShortDate;
radChart1.PlotArea.XAxis.AddRange(today.ToOADate(), today.AddDays(10).ToOADate(), 
1); 
RadControls for Winforms
485
RadControls for Winforms
VB.NET PDF Page Insert Library: insert pages into PDF file in vb.
As String = Program.RootPath + "\\" Output.pdf" Dim doc1 Dim doc2 As PDFDocument = New PDFDocument(inputFilePath2 GetPage(2) Dim pages = New PDFPage() {page0
delete a page in a pdf file; delete pdf pages
C# PDF File & Page Process Library SDK for C#.net, ASP.NET, MVC
RasterEdge XDoc.PDF allows you to easily move PDF document pages position Copying and Pasting Pages. You can use specific APIs to copy and get a specific page of
delete pages from a pdf reader; delete blank pages in pdf
1. In a new WinForms project, add a RadChart to the default form. 
2. In the code behind, add a private method GetDataTable() that will generate and return a four column table 
with sample values. Notice that the data values are also converted to OLE Automation types before storing.
You can find the complete source for this project at:
\VS Projects\Chart\<VB|C#>\DateTimeOnNumericAxis
[VB] Generating the Data
' generate a four column table with sample
' date and time data stored as doubles
Private Function GetDataTable() As DataTable
Dim input As Double(,) = New Double(3, 2) {{8, 12}, {9, 14}, {13, 18.5}}
Dim table As New DataTable()
table.Columns.Add("X"GetType(Double))
table.Columns.Add("X2"GetType(Double))
table.Columns.Add("Y"GetType(Double))
table.Columns.Add("Y2"GetType(Double))
Dim start As DateTime = DateTime.Today
Dim i As Integer = 0
While i < 3
Dim row As DataRow = table.NewRow()
' convert all dates and times to OLE Automation dates
' which are stored as doubles
row("X") = start.AddDays(i).ToOADate()
row("X2") = start.AddDays(i + 1).ToOADate()
row("Y") = start.AddHours(input(i, 0)).ToOADate()
row("Y2") = start.AddHours(input(i, 1)).ToOADate()
table.Rows.Add(row)
System.Math.Max(System.Threading.Interlocked.Increment(i),i - 1)
End While
Return table
End Function
[C#] Generating the Data
RadControls for Winforms
486
RadControls for Winforms
C# PDF Page Rotate Library: rotate PDF page permanently in C#.net
Copy this demo code to your C# application to rotate the first page of One is used for rotating all PDF pages to 180 in clockwise and output a new PDF file
delete pages on pdf online; copy pages from pdf to new pdf
C# PDF Page Insert Library: insert pages into PDF file in C#.net
Apart from the ability to inserting a new PDF page into existing PDF to delete PDF page using C# .NET, how to reorganize PDF document pages and how to
delete page pdf; delete pages of pdf online
3. In the form Load event, configure both axes using the ShortDate format for the X axis and the ShortTime 
format for the Y axis. Notice at the top of the method where we make a little room for the labels by 
removing the legend, setting AutoLayout true to automatically use the extra space. Also notice that the 
axis labels are made visible and the YAxis label is rotated 45 degrees.
// generate a four column table with sample
// date and time data stored as doubles
private DataTable GetDataTable()
{
double[,] input = new double[3, 2] {
{ 8, 12 }, { 9, 14}, { 13, 18.5}
};
DataTable table = new DataTable();
table.Columns.Add("X"typeof(double));
table.Columns.Add("X2"typeof(double));
table.Columns.Add("Y"typeof(double));
table.Columns.Add("Y2"typeof(double));
DateTime start = DateTime.Today;
for (int i = 0; i < 3; i++)
{
DataRow row = table.NewRow();
// convert all dates and times to OLE Automation dates
// which are stored as doubles
row["X"] = start.AddDays(i).ToOADate();
row["X2"] = start.AddDays(i + 1).ToOADate();
row["Y"] = start.AddHours(input[i, 0]).ToOADate();
row["Y2"] = start.AddHours(input[i, 1]).ToOADate();
table.Rows.Add(row);
}
return table;
}
[VB] Configuring the Chart And Binding the Data
Private Sub RadForm1_Load(sender As Object, e As EventArgs)
radChart1.AutoLayout = True
radChart1.Legend.Visible = False
radChart1.PlotArea.YAxis.AxisLabel.Visible = True
radChart1.PlotArea.YAxis.Appearance.LabelAppearance.RotationAngle = 45
radChart1.PlotArea.XAxis.AxisLabel.Visible = True
Dim today As DateTime = DateTime.Today
' Setup chart orientation
radChart1.SeriesOrientation = ChartSeriesOrientation.Horizontal
' Setup XAxis
radChart1.PlotArea.XAxis.Appearance.ValueFormat = ChartValueFormat.ShortDate
radChart1.PlotArea.XAxis.AutoScale = False
radChart1.PlotArea.XAxis.AddRange(today.ToOADate(), today.AddDays(10).ToOADate(), 
1)
' Setup YAxis
radChart1.PlotArea.YAxis.Appearance.ValueFormat = ChartValueFormat.ShortTime
radChart1.PlotArea.YAxis.AutoScale = False
radChart1.PlotArea.YAxis.AddRange(today.AddHours(7).ToOADate(), today.AddHours
(18).ToOADate(), 1 / 24)
' Setup Series
radChart1.Series(0).Type = ChartSeriesType.Gantt
radChart1.Series(0).DataXColumn = "X"
radChart1.Series(0).DataXColumn2 = "X2"
radChart1.Series(0).DataYColumn = "Y"
RadControls for Winforms
487
RadControls for Winforms
C# PDF Image Extract Library: Select, copy, paste PDF images in C#
Open a document. PDFDocument doc = new PDFDocument(inputFilePath); PDFPage page = (PDFPage)pdf.GetPage(0); // Extract all images on one pdf page.
delete pages from a pdf online; delete blank page in pdf online
C# PDF Annotate Library: Draw, edit PDF annotation, markups in C#.
RootPath + "\\" 2.pdf"; String outputFilePath = Program.RootPath + "\\" Annot_6.pdf"; // open a PDF file PDFDocument doc = new PDFDocument(inputFilePath
cut pages from pdf reader; cut pages out of pdf online
4. Run the application. 
 
Events
Use the BeforeLayout event when you want to safely customize layout-related properties. BeforeLayout will 
correctly display without clipping because layout arrangements occur after this event. All the elements of the 
chart exist before this event fires, so you can make changes to items, axis, legend, etc., as in this example 
below.
The form Load event makes a little extra room for the new labels. The BeforeLayout event handler sets the 
chart legend border and cycles through the Y axis text blocks, sets a custom string and rotates the axis item 20 
degrees.
radChart1.Series(0).DataYColumn2 = "Y2"
' Data Bind
radChart1.Series(0).Appearance.LabelAppearance.Visible = False
radChart1.DataSource = GetDataTable()
radChart1.DataBind()
End Sub
[C#] Configuring the Chart And Binding the Data
private void RadForm1_Load(object sender, EventArgs e)
{
radChart1.AutoLayout = true;
radChart1.Legend.Visible = false;
radChart1.PlotArea.YAxis.AxisLabel.Visible = true;
radChart1.PlotArea.YAxis.Appearance.LabelAppearance.RotationAngle = 45;
radChart1.PlotArea.XAxis.AxisLabel.Visible = true;
DateTime today = DateTime.Today;
// Setup chart orientation
radChart1.SeriesOrientation = ChartSeriesOrientation.Horizontal;
// Setup XAxis
radChart1.PlotArea.XAxis.Appearance.ValueFormat = ChartValueFormat.ShortDate;
radChart1.PlotArea.XAxis.AutoScale = false;
radChart1.PlotArea.XAxis.AddRange(today.ToOADate(), today.AddDays(10).ToOADate(), 
1);
// Setup YAxis
radChart1.PlotArea.YAxis.Appearance.ValueFormat = ChartValueFormat.ShortTime;
radChart1.PlotArea.YAxis.AutoScale = false;
radChart1.PlotArea.YAxis.AddRange(today.AddHours(7).ToOADate(), today.AddHours
(18).ToOADate(), 1d / 24d);
// Setup Series
radChart1.Series[0].Type = ChartSeriesType.Gantt;
radChart1.Series[0].DataXColumn = "X";
radChart1.Series[0].DataXColumn2 = "X2";
radChart1.Series[0].DataYColumn = "Y";
radChart1.Series[0].DataYColumn2 = "Y2";
// Data Bind
radChart1.Series[0].Appearance.LabelAppearance.Visible = false;
radChart1.DataSource = GetDataTable();
radChart1.DataBind();
}
[VB] Handling the BeforeLayout Event
Private Sub Form1_Load(sender As Object, e As EventArgs)
radChart1.PlotArea.Appearance.Dimensions.Margins.Left = New
RadControls for Winforms
488
RadControls for Winforms
Telerik.Charting.Styles.Unit(30, Telerik.Charting.Styles.UnitType.Percentage)
radChart1.PlotArea.Appearance.Dimensions.Margins.Bottom = New
Telerik.Charting.Styles.Unit(20, Telerik.Charting.Styles.UnitType.Percentage)
radChart1.IntelligentLabelsEnabled = True
End Sub
Private Sub radChart1_BeforeLayout(sender As Object, e As EventArgs)
radChart1.Legend.Items(0).Appearance.Border.Color = Color.Red
radChart1.Legend.Items(0).Appearance.Border.Visible = True
For Each axisItem As ChartAxisItem In Me.radChart1.PlotArea.YAxis.Items
axisItem.TextBlock.Text = "Custom string"
axisItem.Appearance.RotationAngle = 20
Next
End Sub
[C#] Handling the BeforeLayout Event
private void Form1_Load(object sender, EventArgs e)
{
radChart1.PlotArea.Appearance.Dimensions.Margins.Left =
new Telerik.Charting.Styles.Unit(30, 
Telerik.Charting.Styles.UnitType.Percentage);
radChart1.PlotArea.Appearance.Dimensions.Margins.Bottom =
new Telerik.Charting.Styles.Unit(20, 
Telerik.Charting.Styles.UnitType.Percentage);
radChart1.IntelligentLabelsEnabled = true;
}
private void radChart1_BeforeLayout(object sender, EventArgs e)
{
radChart1.Legend.Items[0].Appearance.Border.Color = Color.Red;
radChart1.Legend.Items[0].Appearance.Border.Visible = true;
foreach (ChartAxisItem axisItem in this.radChart1.PlotArea.YAxis.Items)
{
axisItem.TextBlock.Text = "Custom string";
axisItem.Appearance.RotationAngle = 20;
}
}
18.6 Unique RadChart Features
 
RadControls for Winforms
489
RadControls for Winforms
RadChart has some unique features that we haven't run into yet that you should be aware of: 
Empty Values
RadChart automatically approximates missing values between known data points, simply by setting the Empty
property true on any chart series item. This works for bar, line and area based chart types. You also have 
complete control over the visual style of empty values. The empty value style can be articulated separately 
from the style for the main values.
Scale Breaks
The ScaleBreaks feature allows you to "break off" large chunks of the axis so that graphs with large amplitude 
are easier to read. ScaleBreaks are available for both YAxis and YAxis2 properties of the PlotArea. You can 
tailor the maximum number of breaks, the minimum interval between data points before a break can occur, 
the visual size of the breaks and the visual style of the breaks.
Multi-Line Labels
Labels in RadChart can appear on multiple lines.  For example, the property editor for TextBlock. Text 
properties allows you to hit the enter key to start a new line. Press control-enter to accept the text and close 
the property editor.
RadControls for Winforms
490
RadControls for Winforms
Strict Mode
"strict mode" is not a property or setting, but a behavior of bar chart series where X values are respected and 
bars are positioned according to their XValues. If there are no series items with XValues then RadChart resumes 
standard sequential ordering of each item.
The screen shot below was produced using the X and Y values from this table:
 
Series 1 (Blue)
YValue
XValue
3
0
3
1
4
3
3
3
5
4
Series 2 (Orange)
YValue
XValue
1
5
2
4
RadControls for Winforms
491
RadControls for Winforms
Logarithmic Y-Axis
RadChart's Y-Axis now supports logarithmic mode. This is convenient when you would like to display rapidly 
increasing values. Set the YAxis or YAxis2 IsLogarithmic property (false by default) to true to enable this 
behavior. The LogarithmBase property (10 by default) can be increased to further compress the presentation of 
values.
Drill-Down
RadChart can be configured to handle "drill-down" functionality where the initial presentation of the chart 
presents the "Mile High View" of data where the information shows the most general, highest level scope of 
data. Then the user clicks on a chart element and "drills down" to the next level of specificity.
For example, if we have revenue by Year, Quarter and Month, the initial view will be the greatest time span, 
which is year. The year is divided into quarters. By clicking on an item on the chart you can see the values 
correspoding to the quarters of the selected year. Each quarter consists of 3 months. After choosing a quarter 
for the selected year you can see the values for each month of the quarter.
To test this you can use the Chart.mdb file in the RadControls for Winforms installation directory under 
\Examples\DataSources. Chart.mdb contains a "Revenue" table. Select the Year, Quarter, Month and Revenue 
columns.
18.7 How To
 
RadControls for Winforms
492
RadControls for Winforms
Documents you may be interested
Documents you may be interested