此示例演示如何增强现有图表的外观。有关如何在代码中创建基本图表的示例,请参阅如何:创建和修改图表一文。
选择要执行的操作。
图表样式允许您快速更改图表外观。图表样式更改图表的背景填充,指定数据系列的颜色,并对图表应用不同的形状效果和轮廓。若要将预定义样式之一应用于图表,请使用 ChartObject.Style 属性。
下面的示例演示如何使用 ChartObject.Style 属性创建图表并对其应用预定义样式之一。
Vb.Net |
'创建图表并指定其位置。 Dim chart As DevExpress.Spreadsheet.Charts.Chart = worksheet.Charts.Add(DevExpress.Spreadsheet.Charts.ChartType.ColumnClustered, worksheet("B2:D4")) chart.TopLeftCell = worksheet.Cells("H2") chart.BottomRightCell = worksheet.Cells("N14") '设置图表样式。 chart.Style = DevExpress.Spreadsheet.Charts.ChartStyle.Accent1Dark |
C# |
DevExpress.Spreadsheet.Worksheet worksheet = workbook.Worksheets["chartStock"]; workbook.Worksheets.ActiveWorksheet = worksheet; // 创建图表并指定其位置。 DevExpress.Spreadsheet.Charts.Chart chart = worksheet.Charts.Add(DevExpress.Spreadsheet.Charts.ChartType.ColumnClustered, worksheet["B2:D4"]); chart.TopLeftCell = worksheet.Cells["H2"]; chart.BottomRightCell = worksheet.Cells["N14"]; // 设置图表样式。 chart.Style = DevExpress.Spreadsheet.Charts.ChartStyle.Accent1Dark; |
图表样式允许您应用一组预定义的格式选项。但是,您可以微调这些设置,并通过为单个图表元素指定不同的颜色或轮廓来指定自定义格式。ShapeFormatBase 对象提供了一组可用于图表的格式特征。表示图表元素的所有对象(Chart、PlotArea、Series、Axis、DataLabel、Legend、ChartTitle 等)都继承 ShapeFormatBase 接口,因此可以使用其格式属性来设置所需图表元素的颜色和边框。
若要填充图表元素,请使用 ShapeFormatBase.Fill 属性。此属性返回包含形状填充特征的 ShapeFill 对象。可以使用 ShapeOutlineFill.SetSolidFill 方法用纯色填充图表元素,使用 ShapeOutlineFill.SetNoFill 方法使元素透明,通过调用 ShapeOutlineFill.SetGradientFill 方法应用渐变效果,或者使用 ShapeFill.SetPatternFill 或 ShapeFill.SetPictureFill 方法指定图案或图片填充。
若要设置图表元素的边框,请使用 ShapeFormatBase.Outline 属性。此属性提供对 ShapeOutline 对象的访问,该对象包含用于在图表上绘制边框或线条的选项。使用 ShapeOutlineFill.SetSolidFill 方法指定边框或线条颜色。若要删除轮廓,请调用 ShapeOutlineFill.SetNoFill 方法。您还可以指定线宽 (ShapeOutline.Width)、调整线尾的外观 (ShapeOutline.CapType)、设置图表线的虚线样式 (ShapeOutline.Dashing)、指定图表元素的联接类型 (ShapeOutline.JoinType) 和复合样式 (ShapeOutline.CompoundType)。
若要一次更改所有图表元素的字体属性,请使用 ChartObject.Font 属性。若要设置特定图表元素中包含的文本的格式,请使用该元素的 ShapeTextFormat.Font 属性。这些属性获取 ShapeTextFont 对象,该对象包含一组属性,可用于更改图表和轴标题、刻度线标签和数据标签的字体特征。若要更改图例条目的字体属性,请使用 Legend.Font 属性。
[>[!note] > SpreadsheetControl 不会为属性指定的每个图例条目显示单独的字体。该属性指定的字体将应用于所有条目。但是,可以在代码中检索该属性,以支持的格式导出该属性,并在 Microsoft Excel 中可视化该属性。 如果未指定该属性,但一个或多个图例条目指定了该属性,则从集合中的第一个条目中检索字体。LegendEntry.FontLegend.FontLegendEntry.FontLegend.FontFont
下面的示例演示了如何创建簇状柱形图并调整其外观。首先,添加图表标题并通过 ShapeTextFont.Color 属性更改字体颜色。使用 ShapeOutlineFill.SetNoFill 方法使绘图区域透明,然后利用 ShapeOutlineFill.SetGradientFill 方法将渐变填充应用于图表区域。若要为图表中的所有列设置图片填充,请调用系列对象的 ShapeFill.SetPictureFill 方法。最后,利用 ShapeOutlineFill.SetSolidFill 方法更改主轴的颜色,并通过 ShapeOutline.Width 属性指定轴宽度。
Vb.Net |
'创建图表并指定其位置。 Dim chart As DevExpress.Spreadsheet.Charts.Chart = worksheet.Charts.Add(DevExpress.Spreadsheet.Charts.ChartType.ColumnClustered, worksheet("B2:C8")) chart.TopLeftCell = worksheet.Cells("F2") chart.BottomRightCell = worksheet.Cells("N17") '添加图表标题并设置其格式。 chart.Title.SetValue("Countries with the largest forest area") chart.Title.Font.Color = Color.FromArgb(&H34, &H5E, &H25) '不为绘图区域设置填充。 chart.PlotArea.Fill.SetNoFill() '将渐变填充应用于图表区域。 chart.Fill.SetGradientFill(DevExpress.Spreadsheet.Drawings.ShapeGradientType.Linear, Color.FromArgb(&HFD, &HEA, &HDA), Color.FromArgb(&H77, &H93, &H3C)) Dim gradientFill As DevExpress.Spreadsheet.Drawings.ShapeGradientFill = chart.Fill.GradientFill gradientFill.Stops.Add(0.78F, Color.FromArgb(&HB7, &HDE, &HE8)) gradientFill.Angle = 90 '设置数据系列的图片填充。 chart.Series(0).Fill.SetPictureFill("D:\PictureFill.png") '自定义轴外观。 Dim axisCollection As DevExpress.Spreadsheet.Charts.AxisCollection = chart.PrimaryAxes For Each axis As DevExpress.Spreadsheet.Charts.Axis In axisCollection axis.MajorTickMarks = DevExpress.Spreadsheet.Charts.AxisTickMarks.None axis.Outline.SetSolidFill(Color.FromArgb(&H34, &H5E, &H25)) axis.Outline.Width = 1.25 Next axis '更改值轴的比例。 Dim valueAxis As DevExpress.Spreadsheet.Charts.Axis = axisCollection(1) valueAxis.Scaling.AutoMax = False valueAxis.Scaling.Max = 8000000 valueAxis.Scaling.AutoMin = False valueAxis.Scaling.Min = 0 '指定值轴的显示单位。 valueAxis.DisplayUnits.UnitType = DevExpress.Spreadsheet.Charts.DisplayUnitType.Thousands valueAxis.DisplayUnits.ShowLabel = True '隐藏图例。 chart.Legend.Visible = False |
C# |
// 创建图表并指定其位置。 DevExpress.Spreadsheet.Charts.Chart chart = worksheet.Charts.Add(DevExpress.Spreadsheet.Charts.ChartType.ColumnClustered, worksheet["B2:C8"]); chart.TopLeftCell = worksheet.Cells["F2"]; chart.BottomRightCell = worksheet.Cells["N17"]; // 添加图表标题并设置其格式。 chart.Title.SetValue("Countries with the largest forest area"); chart.Title.Font.Color = Color.FromArgb(0x34, 0x5E, 0x25); // 不为绘图区域设置填充。 chart.PlotArea.Fill.SetNoFill(); // 将渐变填充应用于图表区域。 chart.Fill.SetGradientFill(DevExpress.Spreadsheet.Drawings.ShapeGradientType.Linear, Color.FromArgb(0xFD, 0xEA, 0xDA), Color.FromArgb(0x77, 0x93, 0x3)); DevExpress.Spreadsheet.Drawings.ShapeGradientFill gradientFill = chart.Fill.GradientFill; gradientFill.Stops.Add(0.78F, Color.FromArgb(0xB7, 0xDE, 0xE8)); gradientFill.Angle = 90; // 设置数据系列的图片填充。 chart.Series(0).Fill.SetPictureFill(@"D:\PictureFill.png"); // 自定义轴外观。 DevExpress.Spreadsheet.Charts.AxisCollection axisCollection = chart.PrimaryAxes; foreach (DevExpress.Spreadsheet.Charts.Axis axis in axisCollection) { axis.MajorTickMarks = DevExpress.Spreadsheet.Charts.AxisTickMarks.None; axis.Outline.SetSolidFill(Color.FromArgb(0x34, 0x5E, 0x25)); axis.Outline.Width = 1.25; } // 更改值轴的比例。 DevExpress.Spreadsheet.Charts.Axis valueAxis = axisCollection[1]; valueAxis.Scaling.AutoMax = false; valueAxis.Scaling.Max = 8000000; valueAxis.Scaling.AutoMin = false; valueAxis.Scaling.Min = 0; // 指定值轴的显示单位。 valueAxis.DisplayUnits.UnitType = DevExpress.Spreadsheet.Charts.DisplayUnitType.Thousands; valueAxis.DisplayUnits.ShowLabel = true; // 隐藏图例。 chart.Legend.Visible = false; |
对于影响图表外观的不同图表类型,存在特定设置。使用 ChartView 和 View3DOptions 对象的属性指定二维和三维图表的图表选项。
下面的示例演示了如何创建三维簇状柱形图并调整其外观。具体而言,该代码指定如何使用 View3DOptions.BackWall、View3DOptions.SideWall 和 View3DOptions.Floor 属性自定义图表墙和地板。
Vb.Net |
'创建图表并指定其位置。 Dim chart As DevExpress.Spreadsheet.Charts.Chart = worksheet.Charts.Add(DevExpress.Spreadsheet.Charts.ChartType.Column3DClustered, worksheet("B2:C8")) chart.TopLeftCell = worksheet.Cells("F2") chart.BottomRightCell = worksheet.Cells("L15") '指定序列中的每个数据点具有不同的颜色。 chart.Views(0).VaryColors = True '指定系列大纲。 chart.Series(0).Outline.SetSolidFill(Color.AntiqueWhite) '隐藏图例。 chart.Legend.Visible = False '指定侧墙颜色。 chart.View3D.SideWall.Fill.SetSolidFill(Color.FromArgb(&HDC, &HFA, &HDD)) '指定后墙的填充图案。 chart.View3D.BackWall.Fill.SetPatternFill(Color.FromArgb(&H9C, &HFB, &H9F), Color.WhiteSmoke, DevExpress.Spreadsheet.Drawings.ShapeFillPatternType.DiagonalBrick) Dim floorOptions As DevExpress.Spreadsheet.Charts.SurfaceOptions = chart.View3D.Floor '指定地板颜色。 floorOptions.Fill.SetSolidFill(Color.FromArgb(&HFA, &HDC, &HF9)) '指定地板边框。 floorOptions.Outline.SetSolidFill(Color.FromArgb(&HB4, &H95, &HDE)) floorOptions.Outline.Width = 1.25 |
C# |
// 创建图表并指定其位置。 DevExpress.Spreadsheet.Charts.Chart chart = worksheet.Charts.Add(DevExpress.Spreadsheet.Charts.ChartType.Column3DClustered, worksheet["B2:C8"]); chart.TopLeftCell = worksheet.Cells["F2"]; chart.BottomRightCell = worksheet.Cells["L15"]; // 指定序列中的每个数据点具有不同的颜色。 chart.Views[0].VaryColors = true; // 指定系列大纲。 chart.Series[0].Outline.SetSolidFill(Color.AntiqueWhite); // 隐藏图例。 chart.Legend.Visible = false; // 指定侧墙颜色。 chart.View3D.SideWall.Fill.SetSolidFill(Color.FromArgb(0xD, 0xFA, 0xDD)); // 指定后墙的填充图案。 chart.View3D.BackWall.Fill.SetPatternFill(Color.FromArgb(0x9, 0xFB, 0x9F), Color.WhiteSmoke, DevExpress.Spreadsheet.Drawings.ShapeFillPatternType.DiagonalBrick); DevExpress.Spreadsheet.Charts.SurfaceOptions floorOptions = chart.View3D.Floor; // 指定地板颜色。 floorOptions.Fill.SetSolidFill(Color.FromArgb(0xFA, 0xD, 0xF9)); // 指定地板边框。 floorOptions.Outline.SetSolidFill(Color.FromArgb(0xB4, 0x95, 0xDE)); floorOptions.Outline.Width = 1.25; |