深入浅出CChart 每日一课——第三课 初识交互功能,那山那水那人
下面请用VC6打开第一课编写的程序,并运行之,出现第一课最后一张图的那个界面。
把鼠标在程序的窗口里四处动动,是不是图像的状态随着鼠标位置的移动有所变化呢?
是的,的确是这样,这就是CChart的交互功能在起作用了。
非常奇特的地方在于,我们并没有为交互功能添加任何代码!!!
为了完整地体验CChart的交互功能,需要把第一课的程序略作修改。
在VC中打开Lesson01.cpp文件,找到ATOM MyRegisterClass(HINSTANCE hInstance)这个函数,并在函数里找到下面这一行。
wcex.style = CS_HREDRAW | CS_VREDRAW;
把这一行修改成下面这样。
wcex.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
修改的原因是VC的Win32 Application向导自动产生的程序默认是不响应鼠标双击的,上面的修改让我们的程序能够响应鼠标双击。
是不是简单了点,下面还需要写代码吗?
真的不需要了,这一课的代码编写到此为止。
下面简单介绍CChart的交互功能。
3.1 交互的对象
CChart中交互的对象称为图元,图元的具体范围包括图像标题、绘图区、曲线、坐标轴、图例。
为了解释上面的几种图元,我们首先把图例显示出来。
在程序的客户区右键点击鼠标,出现如图的右键菜单。
点击“Show Legend”,程序界面变成下面这样。
哈哈,图例显示了出来。
下面笨笨把程序界面修改一下,就能显示各种图元是什么了。修改方法不是修改代码,而是利用交互功能直接在程序运行时改,同学们一会也会自己改了。
3.2 图元高亮
当鼠标掠过某个图元时,该图元即高亮。
如图是图像标题高亮。
对于坐标轴高亮、曲线高亮、数据区高亮、图例高亮,这里就不演示了,同学们自己动动鼠标就可以看见效果。
可以想一想,图像标题、坐标轴等图元的高亮,实现应该不难,因为它们仅仅是个方框,但对于曲线的高亮,是不是就不那么容易了吧?这可是笨笨的独门绝技哟,呵呵。本人在CSDN的下载频道有一个CChart的全源码版本,如果哪位同学有兴趣想知道是怎么实现曲线的高亮的,可以下载下来看看。
3.3 图元选择
图像标题、坐标轴、曲线这三种图元可以被选择。
当鼠标位于某图元之上时,按鼠标左键可以选择之。其中曲线的选择还可以在图例中按左键选择。
下图显示了曲线被选择后的界面,线宽加大并变色。当然没有对比是看不出来变化的,需要和上图比较。
3.4选择切换
切换选择图元的方法是Space键,按下Space键,将按照标题à各条坐标轴à各条数据曲线à标题的顺序切换选择。多个坐标轴和多条数据曲线将按照它们添加的顺序切换。
同学们可以按空格键试试看。
3.5图元编辑
当某个图元处于被选择的状态时,按下Enter键,即弹出一个对话框,可以对该图元的属性进行编辑。
例如上图中曲线被选择,按下回车,出现如下对话框。
在这个对话框里可以对图元的很多属性进行修改。例如这里把Title改成“CChart的新数据”,按下OK键后,图像界面就相应地修改了。
改变的地方在图例中,图例中的文字就是曲线的标题。如果有多条曲线,每条曲线都有一个标题。
除了回车键以外,还可以用鼠标双击的方式调出属性对话框。
3.6 右键菜单
本节课的最前面已经出现右键菜单了,那里用右键菜单调出图例。
其实右键菜单的功能非常丰富,同学们自己可以随便试一下,看看各条菜单的作用和效果。
好了,下课铃响了,本节课的内容相当丰富,但实际上只写了半句代码。其实这半句代码也可以不写,对功能的影响仅仅在于鼠标双击不起作用。这个问题你不能怪笨笨,要怪的话,你去找比尔盖茨。
这两课基本都属于瞎掰,下节课开始要准备一些干货了。

![clip_image002[7] clip_image002[7]](http://images0.cnblogs.com/blog/572700/201310/28204958-2aba08ed81e246ada089361f451c3301.jpg)
![clip_image004[7] clip_image004[7]](http://images0.cnblogs.com/blog/572700/201310/28204959-f002099755614f66b016c840f73d6596.jpg)
![clip_image006[7] clip_image006[7]](http://images0.cnblogs.com/blog/572700/201310/28205000-c33ce8ff7b0247e38ff8d102da263f0c.jpg)
![clip_image008[7] clip_image008[7]](http://images0.cnblogs.com/blog/572700/201310/28205001-e9ea56d84b35427aa70743f24aed82dc.jpg)
![clip_image010[7] clip_image010[7]](http://images0.cnblogs.com/blog/572700/201310/28205002-bafc46ba7c6b4a0c9b2e60ab9c098079.jpg)
![clip_image012[7] clip_image012[7]](http://images0.cnblogs.com/blog/572700/201310/28205006-9fb38a4556ba4434a3800710df333316.jpg)
![clip_image014[7] clip_image014[7]](http://images0.cnblogs.com/blog/572700/201310/28205007-db0dd5cd55b74791969ca5228f64edd1.jpg)
浙公网安备 33010602011771号