找回密码
 立即注册

QQ登录

只需一步,快速开始

ttwwok

最新发帖
gw0506
超级版主   /  发表于:2013-8-1 18:32:00
11#
支持中文。
另外,你要的Demo如下:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
ttwwok
高级会员   /  发表于:2013-8-2 08:33:00
12#
谢谢版主,提供的demo正是我所需要的~
回复 使用道具 举报
gw0506
超级版主   /  发表于:2013-8-2 09:40:00
13#
不客气,应该的。
回复 使用道具 举报
ttwwok
高级会员   /  发表于:2013-8-8 11:43:00
14#
问下版主,就一楼的chart3D图形支持的数据量最大是多大,比如给一个二维矩阵,最大可以去到多少呢?
回复 使用道具 举报
gw0506
超级版主   /  发表于:2013-8-8 12:19:00
15#
这个数据我们没有实测值,抱歉~
回复 使用道具 举报
ttwwok
高级会员   /  发表于:2013-8-15 17:52:00
16#
有两个问题想请教一下版主,麻烦回答一下~

问题一:
就一楼所示的柱状图,如下图所示:

能否当坐标停在其中一根柱子上时,就显示这个柱子所在的x,y,z轴的信息,信息以标签的形式显示在柱子的顶部,
效果是否像下图所示:

(注:此图当鼠标停在其中一个柱子时,就显示此柱子的信息,在此图中(截图后没有显示鼠标图案,实际是有的),显示了1996年,USA的信息)
如果可以实现,麻烦提供一个demo

问题二:
就问题一的第一个柱状图,能否用一个控件(button)控制柱状图的的一列或所有柱子都显示x,y,z轴的信息标签呢?
效果如下图所示:

(注:此图,当点击旁边图例中,那个淡蓝的1996年颜色时,就chart3D图就全部显示出淡蓝色柱状图的标签信息)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
ttwwok
高级会员   /  发表于:2013-8-15 17:55:00
17#
想实现效果的原始图是最下面那个,效果图是上面两个,不好意思,版主,这个 排版有点问题。
回复 使用道具 举报
gw0506
超级版主   /  发表于:2013-8-16 11:52:00
18#
你的描述我理解了。不过这里有个区别,你给出的最后这个图,是C13DChart做出来的,他的数据是按照Grid进行组织的,有x,y,z在各维度的数据。

而你给出的另外连个效果图虽然是3D的视觉效果,但是其实只有x,y两个维度的数据。然后通过不同的系列展示4个季度。这个用C1Chart控件就可以做到。

C13DChart不能添加tooltip,但是C1Chart可以。如果你用C1Chart去展示你的数据,就可以通过设置Tooltip,实现你要的效果。例如:
  1.             // setup tooltips
  2.             ChartDataSeriesCollection sc = c1Chart1.ChartGroups[0].ChartData.SeriesList;

  3.             foreach (ChartDataSeries ds in sc)
  4.             {
  5.                 ds.TooltipText = "Series: {#TEXT}" + '\r' + '\n' + "x = {#XVAL}" + '\r' + '\n' + "y = {#YVAL}";
  6.             }
复制代码


你可以查看随软件安装在你机器上的ControlExplorer示例中Chart->Gallery->ColumnCharts->3D Multi Row示例看到效果。效果图如下:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
ttwwok
高级会员   /  发表于:2013-8-16 17:06:00
19#
但3D Multi Row示例的交互性比不上那个C1Chart3D的例子,比如不能放大缩小,而且旋转的角度范围也没有C1Chart3D好,
我看了下Sample Explorer下的CoordMapping3D这个例子,这个也是C1Chart3D的一个例子吧,鼠标点击柱子时,旁边是可以显示x轴、y轴、z轴的数据的,
另外,勾选show这个选框,柱子会显示标签,不过标签的信息是写死的,如果能变成x轴、y轴、z轴的数据就比较完美了。

CoordMapping3D的图如下:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
gw0506
超级版主   /  发表于:2013-8-16 18:26:00
20#
根据这个例子,在chart3D1_MouseMove方法中修改ChartLabels[0].Text就可以达到你要的效果。
  1. this.chart3D1.ChartLabels[0].Text = String.Format("X={0}; Y={1}; Z={2}", x, y, z);
复制代码

  1. private void chart3D1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
  2.                 {
  3.                         if( !bCapture)
  4.                                 return;
  5.                        
  6.                         lblMouse.Text = String.Format( "X={0}; Y={1}", e.X, e.Y);

  7.                         float _x=0, _y=0, _z=0;
  8.                         if( chart3D1.ChartGroups[0].ChartData.CoordToDataCoord( e.X, e.Y, ref _x, ref _y, ref _z))
  9.                         {
  10.                                 if( _x!=x || _y!=y || _z!=z)
  11.                                 {
  12.                                         x = _x; y = _y; z = _z;
  13.                                         lblDataCoord.Text = String.Format( "X={0}; Y={1}; Z={2}", x, y, z );

  14.                     this.chart3D1.ChartLabels[0].Text = String.Format("X={0}; Y={1}; Z={2}", x, y, z);

  15.                                         if( rbValueLabels.Checked)
  16.                                                 toggleValueLabels( true);
  17.                                 }
  18.                                 else
  19.                                         return;
  20.                         }
  21.                         else
  22.                         {
  23.                                 //lblDataCoord.Text = " Not in data range";
  24.                         }

  25.                         int row = 0, col = 0;
  26.                         if( chart3D1.ChartGroups[0].ChartData.CoordToDataIndex( e.X, e.Y, ref col, ref row))
  27.                         {
  28.                                 lblDataIndex.Text = String.Format( "Col={0}; Row={1}", col, row);

  29.                                 chart3D1.ChartLabels[0].AttachMethodData.Column = col;
  30.                                 chart3D1.ChartLabels[0].AttachMethodData.Row = row;

  31.                                 if( chart3D1.ChartGroups[0].ChartType == Chart3DTypeEnum.Bar)
  32.                                 {
  33.                                         if( old_col!=-1 && old_row!=-1)
  34.                                                 chart3D1.ChartGroups[0].Bar.SetBarColor( old_col, old_row, Color.White);
  35.                                         chart3D1.ChartGroups[0].Bar.SetBarColor( col, row, Color.Red);
  36.                                 }
  37.                                 old_row = row;
  38.                                 old_col = col;
  39.                                 btnSetData.Enabled = true;
  40.                         }
  41.                         else
  42.                         {
  43.                                 //lblDataIndex.Text = " Not in data range";
  44.                         }
  45.                 }
复制代码



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部