用类实现画图及图元操作.ppt
《用类实现画图及图元操作.ppt》由会员分享,可在线阅读,更多相关《用类实现画图及图元操作.ppt(20页珍藏版)》请在三一文库上搜索。
1、用类实现画图及图元操作,信息工程学院 蓝善祯,画图基类CShape 画线类CLine 在单文档程序中使用自己的类 链表(或数组)记录每个图元对象 OnDraw重画 画椭圆类CEllipse 图元的选中、移动、删除的原理 图元的层次 图元的变形等原理,画图基类CShape,首先,为了使画图类型更直观,将m_nDrawType改成枚举类型. enum /1:线 2:圆 3:矩形 随手画 DRAW_LINE = 1, DRAW_CIRCLE,DRAW_RECTANGLE, DRAW_PEN m_emDrawType;,画图基类CShape,基类应该有的属性和函数有哪些?大家思考一下,各种图元的共性是
2、什么? 起点和终点 区域 画笔和画刷的属性 是否选中 移动参考点 画图过程是否结束(用于画折线、多边形等) 缩放属性 ,画图基类CShape,成员函数: 画自己 Draw 设置起点和终点 设置画笔属性 画刷属性 更新终点坐标(用于鼠标移动时) 判断是否选中和清除选中状态 设置参考点 移动更新 变形 ,首先新建一个画图基类CShape(由CObject类派生) 点击菜单/Insert/New Class 添加属性,并初始化。类名上右键选择Add Member Variable 添加成员函数(应该使用virtual虚函数)类名上右键选择Add Member Function,画图基类CShape的
3、实现,/画笔类型,画笔宽度 int m_nPenStyle, m_nPenWidth; /画笔颜色,画刷颜色 COLORREF m_crPenColor,m_crBrushColor; /画刷类型 int m_nBrushIndex; /记录包含图元的最小矩形 CRect m_rect; /记录图元的第一点和最后一点 CPoint m_ptStart,m_ptEnd; /选中属性 BOOL m_bSelected; /移动时原始参考点和移动后参考点 CPoint m_ptOriginRef,m_ptEndRef;,画图基类CShape的实现,void SetStartPoint(CPoint
4、ptStart); /设置起点 void SetEndPoint(CPoint ptEnd); /设置终点,即用于更新属性 virtual void Update(); /更新属性,在SetEndPoint之后调用 virtual void SetPenColor(COLORREF crColor);/设置画笔颜色 virtual void SetPenWidth(int nWidth); /设置画笔宽 virtual void SetPenStyle(int nStyle); /设置画笔风格 virtual void SetBrushIndex(int nIndex); /设置画刷填充风格
5、virtual void SetBrushColor(COLORREF crColor);/设置画刷颜色 virtual BOOL IsInArea(CPoint pt); /判断点pt是否在图元中 virtual void SetOriginRef(CPoint pt); /设置参考点 void KillSelected(); /清楚被选中 virtual void MoveUpdate(CPoint pt); /移动时更新坐标属性 virtual void Draw(CDC *pDC); /画图操作,画图基类CShape的实现,为函数SetStartPoint、SetEndPoint、Se
6、tPenColor、SetPenWidth、SetPenStyle KillSelected()等添加代码。因为这些函数对于所有的图元类型来说都是一样的,这些函数也可以不用声明为虚函数。 void CShape:SetStartPoint(CPoint ptStart) m_ptStart = ptStart; ,画图基类CShape的实现,画线类CLine,有CShape派生CLine类 实现Draw函数 void CLine:Draw(CDC *pDC) CPen NewPen; BOOL bSucPen = NewPen.CreatePen(m_nPenStyle,m_nPenWidth
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实现 画图 操作
链接地址:https://www.31doc.com/p-2665276.html