深入浅出CChart 每日一课——第十课 分裂视图,锤子肖哥之错位人格

从这节课开始,笨笨给大家介绍几种CChart支持的复杂视图。

本节课首先介绍分裂视图。

这里的分裂当然不是湾湾阿扁搞的分裂。所谓分裂视图,也就是分区视图,就是把绘图区域分成几块,每一块单独绘制图形。

下面仍然以实例的方式介绍本课内容。

按照第一课的方式建立一个VC6项目,名为Lesson10。下面我们只需要关注WM_CREATE的响应例程。先如下填写。

 
case WM_CREATE:
	chartWnd.Attach(hWnd, kTypeSplit);
	chartWnd.GetChart()->ResizePlots(2, 2, 2);

	double pX[20], pY[20];
	int i;
	for(i=0; i<20; i++)
	{
		pX[i] = i;
		pY[i] = i;
	}
	chartWnd.GetChart()->AddCurve(pX, pY, 20, 0);
	for(i=0; i<20; i++)
	{
		pY[i] = i*i/20.0;
	}
	chartWnd.GetChart()->AddCurve(pX, pY, 20, 1);
	for(i=0; i<20; i++)
	{
		pY[i] = i*i*i/20.0/20.0;
	}
	chartWnd.GetChart()->AddCurve(pX, pY, 20, 2);
		
	break;
 

分裂视图的代号是kTypeSplit。

上面代码需要重点解释的函数是ResizePlots。这个函数的定义如下。

 
void		ResizePlots(int mode, int nRows, int nCols);
 


 

此函数共有三个参数。

第一个参数mode表示分裂的模式。查看Chart.h文件头部被注释掉的代码可知:mode=0表示不分裂;mode=1表示行列分裂;mode=2表示左一右二分裂;mode=3表示左二右一分裂;mode=3表示上一下二分裂;mode=4表示上二下一分裂。

第二个参数nRows表示分裂的行数,第三个参数nCols表示分裂的列数。这两个参数只有当mode=1时候才起作用,其它时候被忽略。

上面编写的代码中进行了左一右二的视图分裂。

运行程序,效果如图。

果然按左一右二的方式,分区绘制了三个图形。

下面给左边的视图添加标题。在上面代码的break;的上一行,填写如下代码。

 
chartWnd.GetChart()->SetTitle(_T("第一个子图的标题"), 0);
 


运行效果如图。

下面再给整个视图添加总标题。在上一句代码的下一行,填写如下代码。

 
chartWnd.GetChart()->SetTitle(_T("总标题"));
 


运行效果如图。

分裂视图实现的交互功能中,分割线是可以拖动的,同学们可以用鼠标试试看。

下面是上图拖动后的一个结果。

本课的编程采用的是CChartWnd类,同学们可以试着改用CChart类实现一下。

本节课到此结束。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值