玉树林风

导航

Dev系列控件之XtraCharts

命名空间引用添加

Code
using DevExpress.XtraCharts;
using
 DevExpress.XtraCharts.Web;
using DevExpress.XtraCharts.Native;

数据绑定 

Code
private void ChartBinding(object sender)
    {
        
string Str_SQL = "select top 7 UnitPrice,UnitsInStock,ReorderLevel,ProductID from Products order by ProductID "
;
        DataSet DS 
=
 DataHandle.ExecuteSQL(Str_SQL);
        WebChartControl1.Series.Clear();
        
//定义线型,名称

        Series S1 = new Series("线条图测试", ViewType.Line);
        
//定义X轴的数据的类型。质量,数字,时间

        S1.ArgumentScaleType = ScaleType.Numerical;
        
//定义线条上点的标识形状

        ((LineSeriesView)S1.View).LineMarkerOptions.Kind = MarkerKind.Circle;
        
//线条的类型,虚线,实线

        ((LineSeriesView)S1.View).LineStyle.DashStyle = DashStyle.Solid;
        
//S1绑定数据源

        S1.DataSource = DS.Tables[0].DefaultView;
        
//S1的X轴数据源字段

        S1.ArgumentDataMember = "UnitPrice";
        
//S2的Y轴数据源字段

        S1.ValueDataMembers[0= "UnitsInStock";
        
//柱状图演示

        Series S2 = new Series("柱状图测试", ViewType.Bar);
        S2.ArgumentScaleType 
=
 ScaleType.Numerical;
        S2.DataSource 
= DS.Tables[0
].DefaultView;
        S2.ArgumentDataMember 
= "UnitPrice"
;
        S2.ValueDataMembers[
0= "ReorderLevel"
;
        
//光滑线条演示

        Series S3 = new Series("弧度曲线测试", ViewType.Spline);
        S3.ArgumentScaleType 
=
 ScaleType.Numerical;
        S3.DataSource 
= DS.Tables[0
].DefaultView;
        S3.ArgumentDataMember 
= "UnitPrice"
;
        S3.ValueDataMembers[
0= "UnitsInStock"
;
        
//加入chartcontrol

        WebChartControl1.Series.Add(S1);
        WebChartControl1.Series.Add(S2);
        WebChartControl1.Series.Add(S3);
        
//定义chart标题

        ChartTitle CT1 = new ChartTitle();
        CT1.Text 
= "这是第一个DEMO"
;
        ChartTitle CT2 
= new
 ChartTitle();
        CT2.Text 
= "CopyRight By BJYD"
;
        CT2.TextColor 
=
 System.Drawing.Color.Black;
        CT2.Font 
= new Font("Tahoma"8
);
        
//标题对齐方式

        CT2.Dock = ChartTitleDockStyle.Bottom;
        CT2.Alignment 
=
 StringAlignment.Far;
        WebChartControl1.Titles.Clear();
        WebChartControl1.Titles.Add(CT1);
        WebChartControl1.Titles.Add(CT2);
        CT2.Indent 
= 1
;
        
//
坐标标题的定义
        
//坐标值说明的字体尺寸,颜色定义

        ((XYDiagram)WebChartControl1.Diagram).AxisY.Title.Font = new Font("Tahoma"10);
        ((XYDiagram)WebChartControl1.Diagram).AxisY.Title.TextColor 
=
 System.Drawing.Color.Red;
        ((XYDiagram)WebChartControl1.Diagram).AxisY.Title.Text 
= "这是测试的纵坐标"
;
        ((XYDiagram)WebChartControl1.Diagram).AxisY.Title.Visible 
= true
;
        ((XYDiagram)WebChartControl1.Diagram).AxisX.Title.Text 
= "这是测试的横坐标"
;
        ((XYDiagram)WebChartControl1.Diagram).AxisX.Title.Visible 
= true
;
        DiagramOwn 
=
 (XYDiagram)WebChartControl1.Diagram;
        
//图例的位置定义

        WebChartControl1.Legend.AlignmentHorizontal = LegendAlignmentHorizontal.Right;
        WebChartControl1.Legend.AlignmentVertical 
=
 LegendAlignmentVertical.Top;
}

显示图标中的数据

Code
private void PerformShowLablesAction()
    {
        
foreach (Series serie in
 WebChartControl1.Series)
        {
            serie.Label.Visible 
=
 cbShowData.Checked;
        }
    }

线形为Bar的时候Label属性

Code
private void PerformBarLabelPosition()
    {
        
foreach (Series serie in
 WebChartControl1.Series)
        {
            
if (serie.Label is
 SideBySideBarSeriesLabel)
            {
                
if (rbbarlabelpostion.SelectedIndex == 0
)
                {
                    ((SideBySideBarSeriesLabel)serie.Label).Position 
=
 BarSeriesLabelPosition.Top;
                }
                
else

                {

                    ((SideBySideBarSeriesLabel)serie.Label).Position 
= BarSeriesLabelPosition.Center;
                }
            }
        }
    } 

显示图标的背景颜色

Code
private void PeformChartAppearance()
    {
        WebChartControl1.AppearanceName 
=
 ddlchartappearance.SelectedValue.Trim();
    }

显示自定义调色板颜色

Code
private void PeformPalette()
    {
        WebChartControl1.PaletteName 
=
 ddlpalette.SelectedValue.Trim();
    }

显示数据的图例形状

Code
private void PefromMarkerKindAction()
    {
        
foreach (Series serie in
 WebChartControl1.Series)
        {
            
//数据点的视图形状包括大小,尺寸,类型等等,只能为线点类型

            if (serie.View is PointSeriesView)
            {
                PointSeriesView view 
=
 (PointSeriesView)serie.View;
                
switch
 (ddlmarkerkind.SelectedValue)
                {
                    
case "Circle"
:
                        view.PointMarkerOptions.Kind 
=
 MarkerKind.Circle;
                        
break
;
                    
case "Cross"
:
                        view.PointMarkerOptions.Kind 
=
 MarkerKind.Cross;
                        
break
;
                    
case "Diamond"
:
                        view.PointMarkerOptions.Kind 
=
 MarkerKind.Diamond;
                        
break
;
                    
case "Hexagon"
:
                        view.PointMarkerOptions.Kind 
=
 MarkerKind.Hexagon;
                        
break
;
                    
case "InvertedTriangle"
:
                        view.PointMarkerOptions.Kind 
=
 MarkerKind.InvertedTriangle;
                        
break
;
                    
case "Pentagon"
:
                        view.PointMarkerOptions.Kind 
=
 MarkerKind.Pentagon;
                        
break
;
                    
case "Plus"
:
                        view.PointMarkerOptions.Kind 
=
 MarkerKind.Plus;
                        
break
;
                    
case "Square"
:
                        view.PointMarkerOptions.Kind 
=
 MarkerKind.Square;
                        
break
;
                    
case "Star"
:
                        view.PointMarkerOptions.Kind 
=
 MarkerKind.Star;
                        
break
;
                    
case "Triangle"
:
                        view.PointMarkerOptions.Kind 
=
 MarkerKind.Triangle;
                        
break
;
                }
            }
        }
    }

定义数据的图例大小

Code
private void PefromMarkerSizeAction()
    {
        
int intsize =
 Convert.ToInt32(ddlmarkersize.SelectedValue.Trim());
        
foreach (Series serie in
 WebChartControl1.Series)
        {
            
//数据点的视图形状包括大小,尺寸,类型等等,只能为线点类型

            if (serie.View is PointSeriesView)
            {
                ((PointSeriesView)serie.View).PointMarkerOptions.Size 
=
 intsize;
            }
        }
    }

定义数据框角度

Code
private void PerformLabelAngleAction()
    {
        
foreach (Series serie in
 WebChartControl1.Series)
        {
            
if (serie.Label is
 PointSeriesLabel)
            {
                ((PointSeriesLabel)serie.Label).Angle 
=
 Convert.ToInt32(ddllableangle.SelectedValue.Trim());
            }
        }
    }

Spline型线条的线张力控制

Code
private void PerformLineTensionAction()
    {
        
foreach (Series serie in
 WebChartControl1.Series)
        {
            
if (serie.View is
 SplineSeriesView)
            {
                ((SplineSeriesView)serie.View).LineTensionPercent 
= int
.Parse(ddlsplinetension.SelectedValue.Trim());
            }
        }
    }

说明框水平位置控制

Code
private void PerformHorAligmentAction()
    {
        
switch
 (ddl_legendhorizontalalign.SelectedValue.Trim())
        {
            
case "Center"
:
                WebChartControl1.Legend.AlignmentHorizontal 
=
 LegendAlignmentHorizontal.Center;
                
break
;
            
case "Left"
:
                WebChartControl1.Legend.AlignmentHorizontal 
=
 LegendAlignmentHorizontal.Left;
                
break
;
            
case "LeftOutside"
:
                WebChartControl1.Legend.AlignmentHorizontal 
=
 LegendAlignmentHorizontal.LeftOutside;
                
break
;
            
case "Right"
:
                WebChartControl1.Legend.AlignmentHorizontal 
=
 LegendAlignmentHorizontal.Right;
                
break
;
            
case "RightOutside"
:
                WebChartControl1.Legend.AlignmentHorizontal 
=
 LegendAlignmentHorizontal.RightOutside;
                
break
;        
        }
    }

说明框竖直位置控制

Code
private void PerformVerAligmentAction()
    {
        
switch
 (ddllegendverticalalign.SelectedValue.Trim())
        {
            
case "Bottom"
:
                WebChartControl1.Legend.AlignmentVertical 
=
 LegendAlignmentVertical.Bottom;
                
break
;
            
case "BottomOutside"
:
                WebChartControl1.Legend.AlignmentVertical 
=
 LegendAlignmentVertical.BottomOutside;
                
break
;
            
case "Center"
:
                WebChartControl1.Legend.AlignmentVertical 
=
 LegendAlignmentVertical.Center;
                
break
;
            
case "Top"
:
                WebChartControl1.Legend.AlignmentVertical 
=
 LegendAlignmentVertical.Top;
                
break
;
            
case "TopOutside"
:
                WebChartControl1.Legend.AlignmentVertical 
=
 LegendAlignmentVertical.TopOutside;
                
break
;
        }
    }

说明框内容位置控制

Code
private void PerformDirectionAction()
    {
        
switch
 (ddllegenddirection.SelectedValue.Trim())
        {
            
case "BottomToTop"
:
                WebChartControl1.Legend.Direction 
=
 LegendDirection.BottomToTop;
                
break
;
            
case "LeftToRight"
:
                WebChartControl1.Legend.Direction 
=
 LegendDirection.LeftToRight;
                
break
;
            
case "RightToLeft"
:
                WebChartControl1.Legend.Direction 
=
 LegendDirection.RightToLeft;
                
break
;
            
case "TopToBottom"
:
                WebChartControl1.Legend.Direction 
=
 LegendDirection.TopToBottom;
                
break
;
        }
    }

说明框最大宽度比例设置

Code
private void PerformMaxHorPrctgAction()
    {
        WebChartControl1.Legend.MaxHorizontalPercentage 
= int
.Parse(ddlmaxhorizontalpercent.SelectedValue.Trim());
    }

说明框最大高度比例设置

Code
private void PerformMaxVerPrctgAction()
    {
        WebChartControl1.Legend.MaxVerticalPercentage 
= int
.Parse(ddlmaxhorizontalpercent.SelectedValue.Trim());
    }

创建第二条X轴,Y轴方法一样省略

Code
 private void ShowSecondaryAxisX()
    {

        XYDiagram diagram 
=
 (XYDiagram)WebChartControl1.Diagram;
        
//清除diagram的所有第二X轴

        diagram.SecondaryAxesX.Clear();
        
//定义一新X轴

        SecondaryAxisX secondaxisx = new SecondaryAxisX("axisX");
        
//找到需要加入第二坐标的线条

        Series serie = WebChartControl1.GetSeriesByName(StrSecondSeriese);
        
//定义新X轴的标题

        secondaxisx.Title.Text = serie.Name + "Second AxisX";
        secondaxisx.Title.Visible 
= true
;
        
//图标第二X坐标集合中加入该新X轴

        diagram.SecondaryAxesX.Add(secondaxisx);
        
//替换默认坐标轴

        ((XYDiagramSeriesViewBase)serie.View).AxisX = secondaxisx;
    }

清除第二条X轴,Y轴方法一样省略

Code
 private void HideSecondaryAxisX()
    {
        XYDiagram diagram 
=
 (XYDiagram)WebChartControl1.Diagram;
        diagram.SecondaryAxesX.Clear();
    }

改变图形类型

Code
private void PerformViewTypeAction()
    {
        ViewType viewType 
=
 ViewType.Line;
        
switch
 (ddlviewtype.SelectedValue.Trim())
        {
            
case "Lines"
:
                viewType 
=
 ViewType.Line;
                
break
;
            
case "Step Lines"
:
                viewType 
=
 ViewType.StepLine;
                
break
;
            
case "Areas"
:
                viewType 
=
 ViewType.Area;
                
break
;
            
case "Stacked Areas"
:
                viewType 
=
 ViewType.StackedArea;
                
break
;
            
case "Full-Stacked Areas"
:
                viewType 
=
 ViewType.FullStackedArea;
                
break
;
            
case "3D Lines"
:
                viewType 
=
 ViewType.Line3D;
                Table5.Visible 
= true
;
                
break
;
            
case "3D Step Lines"
:
                viewType 
=
 ViewType.StepLine3D;
                Table5.Visible 
= true
;
                
break
;
            
case "3D Areas"
:
                viewType 
=
 ViewType.Area3D;
                Table5.Visible 
= true
;
                
break
;
            
case "3D Stacked Areas"
:
                viewType 
=
 ViewType.StackedArea3D;
                Table5.Visible 
= true
;
                
break
;
            
case "3D Full-Stacked Areas"
:
                viewType 
=
 ViewType.FullStackedArea3D;
                Table5.Visible 
= true
;
                
break
;
            
case "Spline"
:
                viewType 
=
 ViewType.Spline;
                
break
;
            
case "Spline Area"
:
                viewType 
=
 ViewType.SplineArea;
                
break
;
            
case "Stacked Spline"
:
                viewType 
=
 ViewType.StackedSplineArea;
                
break
;
            
case "Full-Stacked Spline"
:
                viewType 
=
 ViewType.FullStackedSplineArea;
                
break
;
            
case "Spline 3D"
:
                viewType 
=
 ViewType.Spline3D;
                Table5.Visible 
= true
;
                
break
;
            
case "Spline Area 3D"
:
                viewType 
=
 ViewType.SplineArea3D;
                Table5.Visible 
= true
;
                
break
;
            
case "Stacked Spline 3D"
:
                viewType 
=
 ViewType.StackedSplineArea3D;
                Table5.Visible 
= true
;
                
break
;
            
case "Full-Stacked Spline 3D"
:
                viewType 
=
 ViewType.FullStackedSplineArea3D;
                Table5.Visible 
= true
;
                
break
;
        }
        Series serie 
=
 WebChartControl1.GetSeriesByName(StrSpeSeries);
        serie.ChangeView(viewType);
            
byte transparency = 0
;
            
if (serie.View is Area3DSeriesView || serie.View is AreaSeriesView || serie.View is
 SplineAreaSeriesView)
            {
                transparency 
= 135
;
            }
            ITransparableView transparableView 
= serie.View as
 ITransparableView;
            
if (transparableView != null
)
                transparableView.Transparency 
=
 transparency;
}

控制3D效果时图形的透明度

Code
private void PerformTransparencyAction()
    {
        
byte byttransparency =
 Convert.ToByte(ddlTransparency.SelectedValue.Trim());
        Diagram3D diagram3D 
= WebChartControl1.Diagram as
 Diagram3D;
        
if (diagram3D != null
)
        {
            
for (int i = 0; i < WebChartControl1.Series.Count; i++
)
            {
                
if (WebChartControl1.Series[i].View is
 Area3DSeriesView)
                {
                    ((Area3DSeriesView)WebChartControl1.Series[i].View).Transparency 
=
 byttransparency;
                }
                
else if (WebChartControl1.Series[i].View is
 AreaSeriesView)
                {
                    ((AreaSeriesView)WebChartControl1.Series[i].View).Transparency 
=
 byttransparency;
                }
                
else if (WebChartControl1.Series[i].View is
 SplineAreaSeriesView)
                {
                    ((SplineAreaSeriesView)WebChartControl1.Series[i].View).Transparency 
=
 byttransparency;
                }
                
else if (WebChartControl1.Series[i].View is
 Line3DSeriesView)
                {
                    ((Line3DSeriesView)WebChartControl1.Series[i].View).Transparency 
=
 byttransparency;
                }
                
else if (WebChartControl1.Series[i].View is
 Bar3DSeriesView)
                {
                    ((Bar3DSeriesView)WebChartControl1.Series[i].View).Transparency 
=
 byttransparency;
                }
            }
        }
    }

控制3D效果时图形视觉角度

Code
private void PerformPerspectiveAngleAction()
    {
        
byte byttransparency =
 Convert.ToByte(ddlTransparency.SelectedValue.Trim());
        Diagram3D diagram3D 
= WebChartControl1.Diagram as
 Diagram3D;
        diagram3D.PerspectiveAngle 
= int
.Parse(ddlperspectiveangle.SelectedValue.Trim());
    }

 导出打印相关

Code
<dxm:ASPxMenu SkinID="ChartDemoToolbar" ID="mnuToolbar" runat="server" ClientInstanceName="mnuToolbar" ApplyItemStyleToTemplates="True">
        
<Items>
            
<dxm:MenuItem Name="mnuPrint" Text="" ToolTip="打印该图表">
                
<Image Url="~/Images/Toolbar/BtnPrint.png" />
            
</dxm:MenuItem>
            
<dxm:MenuItem Name="mnuSaveToDisk" Text="" ToolTip="导出图表并保存" BeginGroup="True">
                
<Image Url="~/Images/Toolbar/BtnSave.png" />
            
</dxm:MenuItem>
            
<dxm:MenuItem Name="mnuSaveToWindow" Text="" ToolTip="在线打开图表">
                
<Image Url="~/Images/Toolbar/BtnSaveWindow.png" />
            
</dxm:MenuItem>
            
<dxm:MenuItem Name="mnuFormat"><Template>
                
<dxe:ASPxComboBox runat="server" Width="60px" ValueType="System.String" ID="cbFormat" SelectedIndex="0" ClientInstanceName="cbFormat">
                    
<Items>
                        
<dxe:ListEditItem Value="pdf" Text="pdf" />
                        
<dxe:ListEditItem Value="xls" Text="xls" />
                        
<dxe:ListEditItem Value="png" Text="png" />
                        
<dxe:ListEditItem Value="jpeg" Text="jpeg" />
                        
<dxe:ListEditItem Value="bmp" Text="bmp" />
                        
<dxe:ListEditItem Value="tiff" Text="tiff" />
                        
<dxe:ListEditItem Value="gif" Text="gif" />
                    
</Items>
                
</dxe:ASPxComboBox>
            
</Template></dxm:MenuItem>
            
        
</Items>
        
<ClientSideEvents ItemClick="function(s, e) {
    if (e.item.name == 'mnuPrint')
        chart.Print();
    
if (e.item.name == 'mnuSaveToDisk'
)
        chart.SaveToDisk(cbFormat.GetText());
    
if (e.item.name == 'mnuSaveToWindow'
)
        chart.SaveToWindow(cbFormat.GetText());
}
" />

    </dxm:ASPxMenu>

 

posted on 2011-10-20 16:57  yuanyulin  阅读(1224)  评论(0)    收藏  举报