找回密码
 立即注册

QQ登录

只需一步,快速开始

Hjr2350
论坛元老   /  发表于:2013-1-21 17:10  /   查看:7309  /  回复:6
我现在想动态的给表格插入图表(柱形图...),但是我发现如果我用设计器先创建一个chart,然后向其中添加内容是可以的。
我参考的代码如下
  1.           string colors = "#ffbb22,#ff9911,#aacc33,#aabbbb,#bb0033,#00cc33,#990099,#0011aa,#14D0EE,#B17EC3,#E67F16,#EE5907,#6A2DA1,#0A35F0,#A816D7,#D218AD,#EE0A96,#5A4DAE,#ACE9D9";

  2.             PieSeries pseries = new PieSeries();
  3.             pseries.Values.AddRange(new double[] { 0.2, 0.3, 0.1, 0.2, 0.2 });
  4.             pseries.LabelVisible = true;
  5.             pseries.LabelFormatter = new FarPoint.Win.Spread.Model.GeneralFormatter("0.00%", false);

  6.             FillCollection fc = pseries.PieFills;
  7.             List<SolidFill> list = new List<SolidFill>();
  8.             foreach (string color in colors.Split(new char[] { ',' }))
  9.             {
  10.                 list.Add(new SolidFill(ColorTranslator.FromHtml(color)));
  11.             }
  12.             fc.Clear();
  13.             fc.AddRange(list.ToArray());


  14.             PiePlotArea plotArea = new PiePlotArea();
  15.             plotArea.Location = new PointF(0.2f, 0.2f);
  16.             plotArea.Size = new SizeF(0.6f, 0.6f);
  17.             plotArea.Series.Add(pseries);

  18.             ChartModel model = new ChartModel();
  19.             model.PlotAreas.Add(plotArea);

  20.             //FarPoint.Win.Spread.Chart.SpreadChart char000 = new FarPoint.Win.Spread.Chart.SpreadChart();
  21.             //char000.Top = 0;
  22.             //char000.Left = 0;
  23.             //fpSpread1.ActiveSheet.Charts.Add(char000);
  24.             fpSpread1.ActiveSheet.Charts[0].Model = model;
复制代码


我想问的是如果我要动态创建一个chart
是不是这样写
  1.                         
  2.             FarPoint.Win.Spread.Chart.SpreadChart char000 = new FarPoint.Win.Spread.Chart.SpreadChart();
  3.             char000.Top = 0;
  4.             char000.Left = 0;
  5.             char000.Width = 100;
  6.             char000.Height = 100;
  7.             fpSpread1.ActiveSheet.Charts.Add(char000);
复制代码

但是我在测试时好像没有创建
插入的位置和大小如何设定,可不可以告诉下我谢谢
PS:最好是可以按照单元格来确定位置

6 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-1-21 17:54:00
沙发
回复 1楼Hjr2350的帖子

不知 fpSpread1.ActiveSheet.AddChart() 的第三个重载方法是否满足你的需求,你可以先试一试。
回复 使用道具 举报
Hjr2350
论坛元老   /  发表于:2013-1-21 18:03:00
板凳
回复 2楼dof的帖子


  1. public SpreadChart AddChart(
  2.    int row,
  3.    int column,
  4.    Type seriesType,
  5.    int width,
  6.    int height,
  7.    int x,
  8.    int y
  9. )
复制代码

这个函数我试了下,前面两个row,col应该是指的是,要进行数据收集的行列吧?
如果实在没有以单元格作为插入条件的,能不能给我解释一下这个函数的x,y的单位是什么?像素?
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-1-22 09:27:00
地板
回复 3楼Hjr2350的帖子
  1.     string colors = "#ffbb22,#ff9911,#aacc33,#aabbbb,#bb0033,#00cc33,#990099,#0011aa,#14D0EE,#B17EC3,#E67F16,#EE5907,#6A2DA1,#0A35F0,#A816D7,#D218AD,#EE0A96,#5A4DAE,#ACE9D9";

  2.     PieSeries pseries = new PieSeries();
  3.     pseries.Values.AddRange(new double[] { 0.2, 0.3, 0.1, 0.2, 0.2 });
  4.     pseries.LabelVisible = true;
  5.     pseries.LabelFormatter = new FarPoint.Win.Spread.Model.GeneralFormatter("0.00%", false);

  6.     FillCollection fc = pseries.PieFills;
  7.     List<SolidFill> list = new List<SolidFill>();
  8.     foreach (string color in colors.Split(new char[] { ',' }))
  9.     {
  10.         list.Add(new SolidFill(ColorTranslator.FromHtml(color)));
  11.     }
  12.     fc.Clear();
  13.     fc.AddRange(list.ToArray());


  14.     PiePlotArea plotArea = new PiePlotArea();
  15.     plotArea.Location = new PointF(0.2f, 0.2f);
  16.     plotArea.Size = new SizeF(0.6f, 0.6f);
  17.     plotArea.Series.Add(pseries);

  18.     ChartModel model = new ChartModel();
  19.     model.PlotAreas.Add(plotArea);

  20.     //FarPoint.Win.Spread.Chart.SpreadChart char000 = new FarPoint.Win.Spread.Chart.SpreadChart();
  21.     //char000.Top = 0;
  22.     //char000.Left = 0;
  23.     //fpSpread1.ActiveSheet.Charts.Add(char000);
  24.     //fpSpread1.ActiveSheet.Charts[0].Model = model;
  25.             
  26.     FarPoint.Win.Spread.Chart.SpreadChart chart = fpSpread1.ActiveSheet.AddChart(0, 0, typeof(FarPoint.Win.Chart.PieSeries), 400, 400, 0, 0);
  27.     chart.Model = model;
复制代码
回复 使用道具 举报
Hjr2350
论坛元老   /  发表于:2013-1-22 09:56:00
5#
回复 4楼dof的帖子

这个代码我现在就是这么写的,但是我2L的问题你似乎没有回答我....
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-1-22 14:13:00
6#
请问你现在试用的是Spread的哪个版本呢,在 Spread for WinForms 5.0/6.0 的帮助文档中对 AddChart 的每个重载方法以及参数都有详细的描述。

如有问题,请联系我。
回复 使用道具 举报
Hjr2350
论坛元老   /  发表于:2013-1-22 16:21:00
7#
我在看看吧,我用的是6.0版本的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部