做画板
来源:互联网 发布:windows vista家庭版 编辑:程序博客网 时间:2024/04/29 15:12
做画板涉及到VC的框架结构,是个很好的联系。
主要分为:1、画出图像 2、改变窗口时数据不丢失 3、实现窗口的新建功能 4 、实现窗口的撤销功能
下面详细说明,主要是将自己不熟悉的技术方法列出:
1、画出图像
图像的绘制在视图类中实现,实现过程是:按下左键,移动时画出线条,释放左键就不会画出线条。那么,按下左键时,给绘图程序一个提示,告知其开始绘图,释放左键则给出不许绘图的命令。可通过BOOL变量实现。注意在构造函数中将其设置为FALSE。之后就是绘图,按下左键后,随着点的移动画出线,主要是moveto lineto函数。
还有一些其它的设定,例如,按下左键后,鼠标应变为十字型。
以及鼠标移动时不应超出客户区范围。
2.改变窗口时数据不丢失
改变窗口时,程序会自动调用OnDraw重绘,此时,鼠标画出的数据并没有保存,并且,OnDraw里没有数据,造成了屏幕的清空。因此,设计思路应该是这样的:将画出的线条数据保存在数组,并在重绘时重新绘制上去。
开辟一个数组,存储线条数据,这个数组应该是动态增长的。另外,为了描述线条数据,需要建立一个新类。这个类里,可以描述线上的每个点,两个点一组,既可以存储起来,又便于绘制。因此,这个类里有个操作可以是为了绘制线条。
这个类派生于CObject,下边的动态数组是CObArray。
这个类的头文件如下:
其cpp如下:
这个类建立好后就可以存储线条。
在DOC中存储数据,这个,在视图类中可以很方便的通过
CSingalDocMutiViewDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
获取DOC的指针,进而对里边的数据进行操作。
开辟最重要的存取数组指针:
CObArray m_pLineArray;
添加一个函数,具有这样的功能,画一段线条,就将这个线条添加进数组中。
这样以来,线条就全部添加进了数组,需要创建一个函数,统计处有多少个线条被存储起来。
那么,这样就可以画线条了吗,画线条的功能在CLineDraw中,并且,要使用CObAraay数组中的数据,需要用GetAt函数将其取出,因此,设计如下功能函数:
这个函数中,类型是新建类CLineDraw *类型,并且得到每个线条的索引,CLineDraw 里可以绘制每个线条,故,得到索引后调用DrawLine函数即可将线段绘制出。
在OnDraw中添加如下代码:
至此,就可以保存绘制后的数据。
3、实现窗口的新建功能
窗口新建,就是建立新的窗口,在这个画面上将数据清除。
在DOC中重载DeleteContents函数即可。
实现代码如下:
4、实现窗口的撤销功能
撤销,也就是将先前的数据删除。
在DOC中添加OnEditUndo函数
- 做画板
- canvas做简单画板功能
- 画板
- 画板
- 画板
- 画板
- HTML5 canvas 做画板画图 可以做电子白板
- 在几何画板中是怎样做圆柱的
- 用画板做了张Touch传递机制图
- 几何画板做直线定向平移运动的方法
- 闲着无聊,做了个模拟几何画板网格吸附功能的程序
- JS画板
- WP7 ,画板
- ios 画板
- 简易画板
- 涂鸦画板
- 画板案例
- Android画板
- #pragma prefast
- 解决一个问题还是解决一类问题
- MIPS汇编语言相关
- 连接相关
- gcc编译安装相关
- 做画板
- 如何为Kalman Studio编写T4模板
- MIPS PIC概述 --有关 .MIPS.stubs
- 自旋锁 spinlock 理解
- Struts2与DWR在项目中的共存解决方案
- JSP获取表单值域注意的问题 : enctype="multipart/form-data" 问题
- C# winform 实现MD5加密
- LM3S ADC采样内部温度
- 尾递归