vc中矢量图形快速重画的技巧

vc中矢量图形快速重画的技巧

ID:5317817

大小:141.96 KB

页数:2页

时间:2017-12-08

vc中矢量图形快速重画的技巧_第1页
vc中矢量图形快速重画的技巧_第2页
资源描述:

《vc中矢量图形快速重画的技巧》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、VC中矢量图形快速重画的技巧宋菲(石家庄职业技术学院电气与电子工程系)【摘要】本文介绍了VC6.0用OnDraw()函数对视图进行重画的原断图形元素是否在视图屏幕中。一般采用这个图形元素的边界矩理,并提出了一种通过图形元素的边界矩形对矢量图形快速重画形和视图屏幕边界矩形是否相交的方法。的方法。三、提高图形重画速度的程序实现【关键词】矢量,边界矩形,OnDraw()函数1、得到视图屏幕边界矩形坐标我们为这个应用程序命名为Draw。通过以上分析我们首先要我们用VC6.0开发环境对小型矢量图形系统进行开发。在图得到视图屏幕边

2、界矩形坐标。这里我们定义四个全局浮点变量形放大、缩小、删除、添加图形元素、重画上屏等操作时,要不断地xMinScreen,yMixScreen,xMaxScreen,yMaxScreen来传递绘制视对图形进行重画。虽然计算机运行速度越来越快,但对一个复杂的图的左下角和右上角的实际坐标。这四个全局变量在每次调用矢量图形来说,图形显示一次也要花费大量时间。尤其对于绘图函0nDraw函数实现视图的绘制前被初始化。在绘制函数CDrawView:数,即使是画一条直线的LineTo函数都要花费大量时间计算出应:OnDraw(CDC

3、*pDC)中加入代码实现在每次绘制前得到视图屏幕该显示的像素位置,才能实现对每个像素的显示。所以在开发矢量边界的实际坐标:图形软件时应尽可能采取好的算法提高图形的重画速度。voidCDrawView::OnDraw(CDC*pDC)一、激活视图重画的基本方法(所谓图形重画,就是把当前视图屏幕重新绘制一次,也就是让CDrawDoc*pDoc=GetDocument0:视图类的OnDraw(CDC*pDC)函数重新执行一次。0nDraw函数是ASSERTVALID(pDoc):_被Cview类的消息处理函数OnPaint调

4、用的。在MFC中OnPaintxMixScreen=xStart://(xStart,yStart)为图形屏幕坐函数的实现代码如下:下角点的实际坐标voidCview::OnPaint0yMixScreen=yStart:fCpaintDCdc(this):xMaxScreen=xMixScreen+b1c木wScreen://乏量blc为OnPrepareDC(&dc):逻辑坐标与实际坐标的比例关系OnDraw(&dc):yMaxScreen=yMixScreen+blc术hScreen://wScreen,}hSc

5、reen为当前视图的高度和宽度OnPaint函数是窗口消息WMPAINT的消息处理函数,、_WMPAINT的消息处理函数是当窗口失效或完整性受到破坏时发出2、得到各图形元素的边界矩形的一个窗口消息。要使视图屏幕重新绘制就要激活视图的绘制机一般来说简单图形元素主要包括直线、连续直线、多边形、圆制,有两种方法可实现这个功能:形、圆弧、标注文本等。下面分别介绍如何得到其边界矩形。1、在视图类函数的实现代码中,加入以下代码来激活重画机直线的边界矩形就是以直线的两个顶点为对角顶点的矩形。制:在直线类中加入其函数的实现代码。CDr

6、awDoc水pDoc=GetDocument0:voidCLine::GetRect(float*minX,float*minY,pDoc一>UpdateAl1Views(thiS):float*maxX,float*maxY)UpdateA11Views函数使属于当前文档对象的所有视图屏幕客{户区失效重画。如果应用程序采用单文档结构,此时系统只有一个*minX=min(m_Xl,mX2)://计算并返回最小X值视图,执行此命令时激发视图类的OnDraw函数重新执行来完成重*maxX=max(m_Xl,reX2)://

7、计算并返回最大X值画。如果应用程序采用多文档结构,一个文档具有多个视图,Up—*minY=min(m_Yl,m_Y2)://计算并返回最小Y值dateAllViews函数可使属于当前文档对象的所有视图都重新绘*maxY=max(m_Yl,m_Y2)://计算并返回最大y值制。)2、加入Invalidate0函数使当前视图屏幕客户区失效从而激多边形可看作封闭的连续直线因此连续直线和多边形可作为活图形重画。Invalidate函数与UpdateA1iViews函数的不同点是同一类图形元素处理。连续直线(或多边形)的边界矩形

8、就是它所前者只能使当前视图重画而与其同文档的其他视图并不重画。有顶点的最小和最大坐标。在连续直线(或多边形)类中加入其函二、提高图形重画速度的基本算法数的实现代码。因为矢量图形具有无极放缩的功能,一般情况下并不是所有voidCP1ine::GetRect(float*minx,float*minY,图形元素都能够显示到屏幕上(除非

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。