用Visual-C++生成基本图形.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

3.5用VisualC++生成根本图形;所有GDI对象类的抽象基类都是CGdiObject,而所有实际使用的GDI对象那么是从CGdiObject派生出来的,以下是GDI对象类的列表:

nCFont—字体,它是一种具有某种风格和尺寸的所有字符的完整集合,常常被当作资源存于磁盘中,其中有一些还要依赖某种设备。

nCPen—画笔,它是用来画线和绘制有形边框的。具体使用时,可以指定其颜色和宽度,也可以指定其线型,例如:实线、虚线或点线。

nCBrush—画刷,通过定义一种位图矩阵,用它可以对区域内部进行填充。;nCRgn—区域,它是由多边形、椭圆或者二者组合形成的一种范围,可以利用它来进行填充、裁剪以及鼠标点中测试。

n??CBitmap—位图,它是一种位图矩阵,每一个显示像素都对应于其中的一个或多个位。位图可以用来表示图像,也可以用来创立刷子。

nCPalette—调色板,它是一种颜色映射接口,允许一个应用程序在不干扰其他应用程序的前提下,充分利用输出设备的颜色绘制能力。注意:调色板一般只在颜色数为256种或更少的情况下才使用。

;3.5.2VC++绘图方法;绘图工具选择函数;宏代码

;1.可以先构造画笔对象,然后用函数CreatePen初始化。

函数原型为:BOOLCreatePen(intnPenStyle,intnWidth,COLORREFcrColor);

其中,nPenStyle:画笔风格,其值如表3-2。nWidth:画笔的宽度(逻辑单位),crColor:画笔的颜色。;画笔风格

;画刷风格:实心,网格,模式,空四种风格

除空画刷,其余画刷先构造,再按下面方法之一初始化:

(1)纯色填充图形的内部。函数原型为:

BOOLCreateSolidBrush(COLORREFcrColor);//crColor画刷颜色

(2)影线模式来填充图形的内部。函数原型为

BOOLCreateHatchBrush(intnIndex,COLORREFcrColor);

其中,参数nIndex用于指定影线模式,其值如表3-3。;阴影模式

;(3)图案模式来填充图形的内部。函数原型为:

BOOLCreatePatternBrush(CBitmap*pBitmap);

其中,参数pBitmap是指向位图对象的指针。当用画刷填充图形时,图形内部将用位图一个接一个地填充。

初始化完画刷对象之后,就可以调用CDC的成员函数SelectObject将画刷选入设备文本对象。对于画刷,SelectObject的原型为:

CBrush*SelectObject(CBrush*pBrush);

其中,参数pBrush是指向画??对象的指针。SelectObject返回一个指向原先已选入设备文本对象的画刷对象的指针。如果在此之前没有选择过画刷对象,那么使用缺省画刷。;使用VisualC++在Windows下进行图形程序设计的根本步骤是:

〔1〕在绘制之前,创立绘图工具并设置相关的颜色、线型、线宽等属性;

〔2〕调用相关的绘图函数选择绘图工具并进行绘图;

〔3〕在绘制之后,恢复原有的绘图工具。

例〔画笔,画刷的使用 〕:

CBrushbrush;

brush.CreateHatchBrush(HS_BDIAGONAL,RGB(255,0,0));

CBrush*pOldBrush;

CPen*pOldPen;

pOldBrush=(CBrush*)pDC-SelectObject(brush);

pOldPen=(CPen*)pDC-SelectStockObject(NULL_PEN);

pDC-Ellipse(CRect(50,50,250,250));

pDC-SelectObject(pOldBrush);

pDC-SelectObject(pOldPen);;坐标系统设置和转换函数

;映射模式

映射模式用于定义逻辑坐标的单位与设备坐标间的关系。在缺省的映射模式下,逻辑坐标与设备坐标相同,坐标原点也在窗口左上角,以像素为单位,横坐标随光标向右移动而增加,纵坐标随光标向下移动而增加。

Windows包含八种不同的映射模式(见表3-4),每种映射模式在应用程序中都有特定的用途。;映射模式

;设置映射模式:

函数原型为

virtualintSetMapMode(intnMapMode);

参数nMapMode为前面列出的八种映射模式之一。;设备坐标转换为逻辑坐标,函数原型为:

voidDPtoLP(LPPOINTlpPoints,intnCount=1);

voidDPtoLP(LPRECTlpRec

文档评论(0)

寒傲似冰 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:8071104010000026

1亿VIP精品文档

相关文档