第17讲 矩形的绘制和画刷的使用.ppt

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第17讲 矩形的绘制和画刷的使用

本讲主要内容 矩形类的实现与矩形的绘制 画刷 矩形类的实现 下面开始实现以矩形图元为代表的封闭图形的绘制。 本章的绘图系统所涉及的封闭图形有矩形(CRectangle)、椭圆(CEllipse)、圆(CCircle)、多边形(CPolygon)、圆角矩形(CRoundRect)。 下面以矩形为例具体介绍其绘制功能的实现。 矩形类的实现 根据10.1.3节所完成的绘图系统类层次关系,所有的封闭图形都是填充类CFill的子类。下面我们为绘图系统添加绘制矩形的功能。 【例10-9】 在例10-8程序基础上,为MyDrawSystem绘图程序添加绘制矩形的功能。 矩形类的实现 绘制矩形的步骤是这样的:当用户点击菜单“绘图|矩形”之后,就进入到“绘制矩形”命令状态,这时在客户区按下鼠标左键就输入了矩形的左上角或右下角坐标,拖动鼠标,这时出现“橡皮矩形”,当释放鼠标左键,一个矩形就被“画”了出来,即显示在客户区中。 接着如果再次按下鼠标左键?拖动?释放鼠标左键,则画出第二个矩形。如果在按下鼠标左键的同时还按下了键盘上的Shift键,则画出一个正方形。 矩形类的实现 【编程步骤】 (1)首先为菜单项“绘图|矩形”添加相应的消息响应函数OnCreateRectangle()。将该命令项映射到视图类。添加代码如下。 void CMyDrawSystemView::OnCreateRectangle() //菜单命令“绘图|矩形” { m_nFigureType=5; //5代表图元为矩形 //点击菜单命令后获得十字光标句柄 m_hCross=AfxGetApp() -LoadStandardCursor(IDC_CROSS); } 矩形类的实现 (2)选择Insert|New Class命令,打开New Class对话框,在ClassType中选择“Generic Class”,在Name编辑框中键入“CRectangle”,在Base Class(es)框中,用鼠标左键单击“Derived From”下面的高亮区,键入“CFill”。点击OK,将弹出一个消息框,直接点击“确定”,生成CRectangle类的两个支持文件。 为CRectangle类定义成员变量和成员函数。包括表示矩形左上角坐标和右下角坐标、类型为CPoint的成员变量m_TopLeft和m_BottomRight。 矩形类的实现 另外矩形类有“画矩形”的动作,要修改从其父类CFill(实际上是祖父类CLineType)那里继承下来的成员函数Draw (),其功能是使用m_TopLeft和m_BottomRight两点坐标将矩形画出来。 矩形类的实现 //Rectangle.h文件 #include Fill.h class CRectangle : public CFill { protected: CPoint m_TopLeft,m_BottomRight; //矩形左上角坐标和右下角坐标 public: CRectangle(); CRectangle(CPoint pt1,CPoint pt2,int width=1, int linetype=PS_SOLID, COLORREF linecolor=RGB(0,0,0),int fillpattern=0,COLORREF fillcolor=RGB(255,255,255)); virtual ~CRectangle(); void Draw(CDC *pDC); //绘制矩形的成员函数 }; 矩形类的实现 //Rectangle.cpp文件 CRectangle::CRectangle() { m_TopLeft.x=m_TopLeft.y=0; m_BottomRight.x=m_BottomRight.y=0; } CRectangle::CRectangle(CPoint pt1,CPoint pt2,int width,int linetype, COLORREF linecolor, int fillpattern,COLORREF fillcolor):CFill(width, linetype, linecolor,type, fillpattern, fillcolor) { m_TopLeft = pt1; m_BottomRight = pt2; } 矩形类的实现 CRectangle::~CRectangle() {} void C

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档