您的位置:首页 > 其它

Dev系列控件之XtraCharts(一)

2014-04-21 20:30 176 查看
XtraCharts是Dev控件包一大重要控件,涵盖了一个画图控件的所有需要输出的效果,并提供了一些特色功能,并直接从流输出不需要产生临时图片文件。本文介绍一些常用的属性以及方法。

 

命名空间引用添加

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>

XtraCharts是Dev控件包一大重要控件,涵盖了一个画图控件的所有需要输出的效果,并提供了一些特色功能,并直接从流输出不需要产生临时图片文件。本文介绍一些常用的属性以及方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息