微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Silverlight开发历程—绘制报表

 其本上例子是前台学习的,综合起来做一个报表。很简陋,只是体验一下绘图功能
public partial class ChartFor2011 : UserControl
    {
        //创建 坐标集合
        private PointCollection pc = new PointCollection();

        public ChartFor2011()
        {
            InitializeComponent();
            LoadLine();
            LoadEllipse();
            BulidText();
        }
        //创建12个月文本
        private void BulidText()
        {
            for (int i = 1; i <= 12; i++)
            {
                TextBlock txb = new TextBlock()
                {
                     Text=string.Format("{0}月份",i.ToString()),FontSize=18,Width=40,Foreground=new SolidColorBrush(Colors.White)
                };
                txb.SetValue(Canvas.LeftProperty,pc[i-1].X);
                txb.SetValue(Canvas.TopProperty,500.00);
                canvas_month.Children.Add(txb);
            }
        }

        //使用polyline画线
        private void LoadLine()
        {
          //将集合添加到集合中
            pc.Add(new Point(10,380));
            pc.Add(new Point(60,320));
            pc.Add(new Point(110,365));
            pc.Add(new Point(160,300));
            pc.Add(new Point(210,290));
            pc.Add(new Point(260,320));
            pc.Add(new Point(310,190));
            pc.Add(new Point(360,240));
            pc.Add(new Point(410,150));
            pc.Add(new Point(460,90));
            pc.Add(new Point(510,110));
            pc.Add(new Point(560,40));
            polyline pl = new polyline();
            pl.stroke = new SolidColorBrush(Colors.White);
            pl.strokeThickness = 2;
            pl.Points = pc;
            //为polyLine添加渲染效果
            RenderEffect(ref pl);
            //将对象添加页面UI上
            canvas_chart.Children.Add(pl);
        }

        //添加渲染效果
        private void RenderEffect(ref polyline line)
        {
            DropShadowEffect dse = new DropShadowEffect();
            dse.BlurRadius = 30;
            dse.Opacity = 1;
            dse.ShadowDepth = 0;
            dse.Color = Colors.White;
            line.Effect = dse;
        }

        private void LoadEllipse()
        {
            int i = 1;
            foreach (Point p in pc)
            {
                //创建椭圆对象
                Ellipse ep = new Ellipse();
                ep.Width = ep.Height = 10;
                ep.Fill = new SolidColorBrush(Colors.Red);
                ep.VerticalAlignment = VerticalAlignment.Top;
                ep.HorizontalAlignment = HorizontalAlignment.Left;
                //计算椭圆位置
                double left = p.X - ep.Width / 2;
                double top = p.Y - ep.Height / 2;
                ep.Margin = new Thickness(left,top,0);
                // 添加信息
                ToolTipService.SetToolTip(ep,string.Format("这是{0}月份的数据({1})",i,p.X * p.Y));
                canvas_chart.Children.Add(ep);
                i++;
            }
        }


运行结果:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐