• MSchart绘制图形


          看到这个标题,就会想到这是微软提供的一个免费的画图控件,可以再VS2005和VS2008里应用,单纯的从样例效果来看是相当不错,也可以满足大部分需求和应用。如果仔细研究,就会发现存在问题。它其实就是Dundas Chart产品的一个老版本 4.0以前的,目前Dundas已经升级到7.0版本了,并且增加了许多新的功能,但是价格也不低,可以根据情况选择适合的;后面也试过ChartDirector这个控件,说实话这个功能也挺强大,并且支持的语言多,价格还低,如果掏钱的话,选择它是不错的。

          这个工作是本人去年完成的事情,当时忙也没来得及写入blog,最近有时间就把原来的一些经验分享一下,也方便自己以后再用。

          经过本人对MSchart功能的简单测试,发现它最多只能有两个Y轴和两个X轴,并且位置也是固定的,只能在上、下、左、右显示,不能在同一侧并行显示,绘制多饼图需要自行处理才能实现,本身不包含多饼图的类型,并且也不包含仪表盘类型的图,其余大部分类型还是有滴。譬如函数的功能:总计、平均值……由于时间紧迫,没测试。

         然而Dundas Chart最新的版本中已经包含这些功能,还有一个工具条包含打印、预览、样式等功能,也可以自己定义自己想要的功能,并且还可以在图形上轻松实现右键菜单的功能。

        下面是对MSchart做的一个简单的示例:

       

    代码
     1 public void Point()
     2     {
     3         //创建图形区域
     4         ChartArea carea1 = new ChartArea();
     5         ChartArea carea2 = new ChartArea();
     6         carea1.Name = "carea1";
     7         carea2.Name = "carea2";
     8         //创建画布
     9         Chart chart1 = new Chart();
    10         chart1.Width = 400;
    11         chart1.Height = 400;
    12 
    13         chart1.ChartAreas.Add(carea1);
    14         chart1.ChartAreas.Add(carea2);
    15         
    16         //图形属性设置
    17         chart1.ImageLocation = "ChartPic_#SEQ(300,3)";
    18         chart1.ImageStorageMode = ImageStorageMode.UseHttpHandler;
    19         chart1.ImageType = ChartImageType.Png;
    20         chart1.RenderType = RenderType.ImageTag;
    21         //chart1.ViewStateContent = SerializationContents.Default;
    22         chart1.Palette = ChartColorPalette.BrightPastel;
    23 
    24         
    25         //Y轴属性设置
    26         carea1.AxisX.IsStartedFromZero = false;
    27         carea1.AxisY.IsStartedFromZero = true;
    28         carea1.AxisX.Title = "日期";
    29         carea1.AxisY.Title = "数量";
    30         
    31         //添加标题
    32         Title title = new Title();
    33         title.Text = "测试MSChart";
    34         chart1.Titles.Add(title);
    35 
    36         //添加图例
    37         Legend leg = new Legend();
    38         leg.LegendStyle = LegendStyle.Column;
    39         chart1.Legends.Add(leg);
    40 
    41         Axis axis1 = new Axis();
    42 
    43          //创建的3个系列 快速线形、散点、气泡
    44         Series series = new Series();
    45         series.ChartType = SeriesChartType.FastLine;
    46         series.ChartArea = "carea1";
    47         Series series0 = new Series();
    48         series0.ChartType = SeriesChartType.Point;
    49         series0.ChartArea = "carea1";
    50         Series series1 = new Series();
    51         series1.ChartType = SeriesChartType.Bubble;
    52         series1.ChartArea = "carea2";
    53 
    54         //系列上点显示的样式 如:圆形、菱形、矩形……
    55         series.MarkerStyle = MarkerStyle.Circle;
    56         series.BorderWidth = 3;
    57         series.ShadowOffset = 2;
    58 
    59         //对系列添加数据点
    60         series.Points.AddXY(0,30);
    61         series.Points.AddXY(1,67);
    62         series.Points.AddXY(2,57);
    63         series.Points.AddXY(3,83);
    64         series.Points.AddXY(4,23);
    65         series.Points.AddXY(5,70);
    66         series.Points.AddXY(6,60);
    67         series.Points.AddXY(7,90);
    68         series.Points.AddXY(8,20);
    69 
    70         series0.Points.AddXY(570);
    71         series0.Points.AddXY(660);
    72         series0.Points.AddXY(790);
    73         series0.Points.AddXY(820);
    74 
    75         series1.Points.AddXY(030);
    76         series1.Points.AddXY(167);
    77         series1.Points.AddXY(257);
    78         series1.Points.AddXY(383);
    79         series1.Points.AddXY(423);
    80 
    81         // 添加3个图形系列
    82         chart1.Series.Add(series);
    83         chart1.Series.Add(series0);
    84         chart1.Series.Add(series1);    
    85         //设置X、Y为主坐标轴
    86         chart1.Series[0].XAxisType = AxisType.Primary;
    87         chart1.Series[0].YAxisType = AxisType.Primary;
    88 
    89         Panel1.Controls.Add(chart1);
    90         //实现鼠标移动到数据点上显示数据
    91         chart1.Series[0].ToolTip = "X value \t= #VALX{d}\nY value \t= #VALY{D}";
    92         //可以加载一个含有数据的xml文件
    93         //chart1.LoadTemplate(this.MapPath("" + ".xml"));
    94     }

          

         效果图如下:      

     

           如果大家有其它什么疑问,欢迎提出,共同交流、学习~

  • 相关阅读:
    手机蓝牙各类服务对应的UUID
    Android数据传递的四种方法
    PS延迟显示的解决方法
    字符串分离函数
    利用cmd命令创建wifi热点
    我的毕业设计——无线控制平台
    只需简单一步,android自带的示例程序 BluetoothChat 变蓝牙串口助手
    volatile 关键字
    PC蓝牙开发笔记
    Jquery与CSS中的大于符号
  • 原文地址:https://www.cnblogs.com/ZHF/p/1653387.html
Copyright © 2020-2023  润新知