收藏 分销(赏)

微波辐射制备烟杆基木质陶瓷及其应用研究.pptx

上传人:人****来 文档编号:4422237 上传时间:2024-09-20 格式:PPTX 页数:18 大小:750.27KB
下载 相关 举报
微波辐射制备烟杆基木质陶瓷及其应用研究.pptx_第1页
第1页 / 共18页
微波辐射制备烟杆基木质陶瓷及其应用研究.pptx_第2页
第2页 / 共18页
微波辐射制备烟杆基木质陶瓷及其应用研究.pptx_第3页
第3页 / 共18页
微波辐射制备烟杆基木质陶瓷及其应用研究.pptx_第4页
第4页 / 共18页
微波辐射制备烟杆基木质陶瓷及其应用研究.pptx_第5页
第5页 / 共18页
点击查看更多>>
资源描述

1、VC+VC+动画图形绘制动画图形绘制概述v计算机动画:借助计算机生成一系列供动态演示图形的技术。计算机动画:借助计算机生成一系列供动态演示图形的技术。v动画技术在动画技术在CADCAD、CAMCAM、CAICAI等许多领域里都有广泛应用等许多领域里都有广泛应用v动画直观、形象等特点,在模拟仿真领域也有关非常重要的地位。动画直观、形象等特点,在模拟仿真领域也有关非常重要的地位。如模拟航空器飞行,能使飞行员在计算机上处理实际飞行中可能出现的如模拟航空器飞行,能使飞行员在计算机上处理实际飞行中可能出现的问题。问题。v计算机生成动画的两种途经:计算机生成动画的两种途经:利用现成的动画制作软件,如二维的

2、利用现成的动画制作软件,如二维的FlashFlash工具、三维的工具、三维的3DMAX3DMAX工具等。工具等。生成动画比较方便、快速,制作人员无需掌握编程知识,在较短的时间内就能学会。生成动画比较方便、快速,制作人员无需掌握编程知识,在较短的时间内就能学会。直接通过编写程序来生成动画直接通过编写程序来生成动画要求制作人员具备一定的程序设计知识,动画编程技巧。要求制作人员具备一定的程序设计知识,动画编程技巧。v利用计算机编程可产生种类型的动画:异或动画、调色板动画、侦动画、利用计算机编程可产生种类型的动画:异或动画、调色板动画、侦动画、块动画和实时动画。块动画和实时动画。动画类型简介v异或动画

3、:利用异或方式在原来位置重画,就能快速地擦除刚才的画的物体,异或动画:利用异或方式在原来位置重画,就能快速地擦除刚才的画的物体,然后在新位置显示出来。然后在新位置显示出来。异或操作:异或是一个数学运算符。他应用于逻辑运算。异或操作:异或是一个数学运算符。他应用于逻辑运算。其运算法则为其运算法则为a a异或异或b ba ab+abb+ab(a a为非为非a a)。例如:)。例如:0000111100001111异或异或11111111111111111111000011110000v调色板动画:通过将各个像素点的颜色按一定的方式进行循环变化,就可以调色板动画:通过将各个像素点的颜色按一定的方式进

4、行循环变化,就可以模仿出流动的水、空气和亮度等变化。模仿出流动的水、空气和亮度等变化。v侦动画:(翻页式动画)是将动画所有的侦准备好,然后快速地切换每一侦侦动画:(翻页式动画)是将动画所有的侦准备好,然后快速地切换每一侦画面,由此形成动画。画面,由此形成动画。v块动画块动画:将显示对象分为背景和前景两部分,背景不发生改变面前景不断变化,将显示对象分为背景和前景两部分,背景不发生改变面前景不断变化,便显示出动画效果。便显示出动画效果。v实时动画实时动画:在动画过程中实时地绘制图形,至少需要两个图形页,当在一页上在动画过程中实时地绘制图形,至少需要两个图形页,当在一页上绘制图形时另一而被显示出来,

5、如此循环切换来显示动画。绘制图形时另一而被显示出来,如此循环切换来显示动画。1 1 异或动画异或动画v1.11.1异或动画原理异或动画原理绘制图形时使用异或光栅操作代码,即绘制图形时使用异或光栅操作代码,即R2_XORPENR2_XORPEN代码,代码,R2_XORPENR2_XORPEN表将画表将画笔和屏幕颜色进行异或运算,它们是绘制图形的基础,也是这种绘制方法名笔和屏幕颜色进行异或运算,它们是绘制图形的基础,也是这种绘制方法名的由来。最后结果是两种颜色的异或,异或运算规则见下表:的由来。最后结果是两种颜色的异或,异或运算规则见下表:ABA XOR B0000111011101.1异或动画原

6、理v第一次异或方式在屏幕上某一位置画图时,最后的结果是画笔颜色和屏幕颜第一次异或方式在屏幕上某一位置画图时,最后的结果是画笔颜色和屏幕颜色的异或。色的异或。v第二次在相同位置用异或方式重画后,最后的结果又变回屏幕原来的颜色,第二次在相同位置用异或方式重画后,最后的结果又变回屏幕原来的颜色,也就是将第一次所画的物体擦除了。也就是将第一次所画的物体擦除了。v由于是位运算,速度非常快,不会出现闪烁现象。由于是位运算,速度非常快,不会出现闪烁现象。v在某一开始位置用异或的方式画一物体,然后隔一定的时间间隔在上次的位在某一开始位置用异或的方式画一物体,然后隔一定的时间间隔在上次的位置再画一次,然后沿某个

7、方向移动一微小距离,在新的位置将物体再画一遍,置再画一次,然后沿某个方向移动一微小距离,在新的位置将物体再画一遍,如此循环下去,就可以看到一个物体在运动,可形成动画。如此循环下去,就可以看到一个物体在运动,可形成动画。1.2异或动画举例v例子:在交互式绘图中用户想画一条直线,首先按下鼠标左键确定直线起点,例子:在交互式绘图中用户想画一条直线,首先按下鼠标左键确定直线起点,接着移动鼠标,这时会有一条直线随着鼠标移动,直到用户松开左键为止,接着移动鼠标,这时会有一条直线随着鼠标移动,直到用户松开左键为止,这条随鼠标移动的直线称为这条随鼠标移动的直线称为“像皮筋像皮筋”。第一步:定义两个变量第一步:

8、定义两个变量CPoint start,end;/CPoint start,end;/直线的起点和终点直线的起点和终点int flag;/int flag;/标志:第一次标志:第一次鼠标左键:鼠标左键:0 0第二鼠标左键第二鼠标左键:在构造方法中初始化在构造方法中初始化flag=0;flag=0;第二步:增加鼠标左键消息处理及代码第二步:增加鼠标左键消息处理及代码1.2异或动画举例CDC*dc=GetDC();/CDC*dc=GetDC();/取得绘图设备环境上下文指针取得绘图设备环境上下文指针 CPen newpen(PS_SOLID,0,RGB(255,0,0);/CPen newpen(P

9、S_SOLID,0,RGB(255,0,0);/创建新的画笔创建新的画笔CPen*oldpen;CPen*oldpen;if(flag=0)/if(flag=0)/第一次按下鼠标左键时第一次按下鼠标左键时flag=1;flag=1;start=end=point;start=end=point;else/else/第二次按下鼠标左键时第二次按下鼠标左键时oldpen=dc-SelectObject(&newpen);/oldpen=dc-SelectObject(&newpen);/将新画笔选进设备上下文中,将原设备将新画笔选进设备上下文中,将原设备上下文存于旧画笔中上下文存于旧画笔中dc-S

10、etROP2(R2_XORPEN);/dc-SetROP2(R2_XORPEN);/设备画线模式为异或设备画线模式为异或dc-MoveTo(start);/dc-MoveTo(start);/移动到起点移动到起点dc-LineTo(end);/dc-LineTo(end);/画线到终点,将这前所画线条用异或模式擦除画线到终点,将这前所画线条用异或模式擦除end=point;end=point;/重新设置终点重新设置终点dc-SetROP2(R2_XORPEN);/dc-SetROP2(R2_XORPEN);/设备画线模式为异或设备画线模式为异或dc-MoveTo(start);dc-MoveT

11、o(start);dc-LineTo(end);dc-LineTo(end);dc-SelectObject(oldpen);/dc-SelectObject(oldpen);/将旧画笔选进设备上下文将旧画笔选进设备上下文flag=0;/flag=0;/还原状态还原状态 ReleaseDC(dc);ReleaseDC(dc);1.2异或动画举例第三步:增加鼠标移动消息处理及代码第三步:增加鼠标移动消息处理及代码CDC*dc=GetDC();CDC*dc=GetDC();CPen newpen(PS_SOLID,0,RGB(255,0,0);CPen newpen(PS_SOLID,0,RGB(

12、255,0,0);CPen*oldpen=dc-SelectObject(&newpen);CPen*oldpen=dc-SelectObject(&newpen);dc-SetROP2(R2_XORPEN);dc-SetROP2(R2_XORPEN);if(flag=1)if(flag=1)dc-MoveTo(start);dc-MoveTo(start);dc-LineTo(end);dc-LineTo(end);end=point;end=point;dc-MoveTo(start);dc-MoveTo(start);dc-LineTo(end);dc-LineTo(end);dc-Se

13、tROP2(R2_XORPEN);dc-SetROP2(R2_XORPEN);dc-SelectObject(oldpen);dc-SelectObject(oldpen);ReleaseDC(dc);ReleaseDC(dc);2 调色板动画v2.12.1调色板动画原理调色板动画原理一个调色板包含一组一个调色板包含一组256256个个2424位的位的RGBRGB颜色值。颜色值。调色板不同颜色就不同,最多有调色板不同颜色就不同,最多有256256种,从种,从0 0255255索引:在显示缓存中,每个像素都有一个从索引:在显示缓存中,每个像素都有一个从0 0255255的值。的值。这个像素值指出

14、了使用调色板中的哪种颜色给该像素着色。这个像素值指出了使用调色板中的哪种颜色给该像素着色。改变像素颜色的方法:改变像素的索引值,使其指向调色板中拐一项;改变像素颜色的方法:改变像素的索引值,使其指向调色板中拐一项;改变调色板的改变调色板的RGBRGB值。注意:第二种方法将导致屏幕上所有使用该调色板值。注意:第二种方法将导致屏幕上所有使用该调色板项值的像素的颜色都发生变化。项值的像素的颜色都发生变化。缺点:整个屏幕只能显示缺点:整个屏幕只能显示256256种颜色,而不是针对某个窗口或应用程序。种颜色,而不是针对某个窗口或应用程序。优点:使未压缩的图像文件比真彩色图像小三分之二;可以使用优点:使未

15、压缩的图像文件比真彩色图像小三分之二;可以使用WindowsWindows固有的调色板操作函数执行一种比较流行且经济的动画调色板动画。固有的调色板操作函数执行一种比较流行且经济的动画调色板动画。调色板动画就是通过有规律地改变每个像素的索引值,使得屏幕上每个调色板动画就是通过有规律地改变每个像素的索引值,使得屏幕上每个像素的颜色发生变化,形成一种动感。能很好地模仿出流动的水、空气、像素的颜色发生变化,形成一种动感。能很好地模仿出流动的水、空气、亮度等变化效果。亮度等变化效果。2.2 生成调色板动画的步骤v2.2.生成调色板动画的步骤生成调色板动画的步骤.声明一个调色板对象,并将它初始化声明一个调

16、色板对象,并将它初始化.创建几把画刷,每把画刷用标志置成创建几把画刷,每把画刷用标志置成0 x010 x01的值以初始化,这表明每个的值以初始化,这表明每个画刷的颜色都是一个指定调色板位置的索引画刷的颜色都是一个指定调色板位置的索引3.3.设置一个定时器,用它来控制隔多长时间将屏幕重画。设置一个定时器,用它来控制隔多长时间将屏幕重画。4.4.用创建的每把刷子各画一个物体。用创建的每把刷子各画一个物体。5.5.每隔一定时间调用调色板的操作函数每隔一定时间调用调色板的操作函数AnimatePaletteAnimatePalette来改变每把画刷来改变每把画刷的索引的索引最后的结果就是看起来屏幕上的

17、每个物体在不停地移动,实际上是它们最后的结果就是看起来屏幕上的每个物体在不停地移动,实际上是它们的颜色在发生改变。的颜色在发生改变。2.3 调色板动画举例v2.3 2.3 调色板动画举例调色板动画举例v创建一个基于对话框的应用程序,在对话框的四周车许多小圆表示灯炮,程创建一个基于对话框的应用程序,在对话框的四周车许多小圆表示灯炮,程序运行时各个小圆的颜色发生变化,好像门上闪烁的灯。序运行时各个小圆的颜色发生变化,好像门上闪烁的灯。3 帧动画v3.13.1帧动画原理帧动画原理帧动画也称页动画或全屏幕动画。帧动画也称页动画或全屏幕动画。动画程序预先建立许多幅全屏幕图像,并将每幅图像都存起来。动画程

18、序预先建立许多幅全屏幕图像,并将每幅图像都存起来。每幅图像也称为一帧面,播放时程序依次显示每幅图像,形成动画。每幅图像也称为一帧面,播放时程序依次显示每幅图像,形成动画。常用于复杂的整屏三维动画。常用于复杂的整屏三维动画。v3.23.2制作帧动画制作帧动画首先:把第一帧画面建立起来。首先:把第一帧画面建立起来。一般情况每帧的场景都非常复杂,习惯上都是用其他图形图像处理软件来实一般情况每帧的场景都非常复杂,习惯上都是用其他图形图像处理软件来实现。现。由于每一秒至少需要由于每一秒至少需要2424帧画面才能取得比较好的效果,所以工作量非常大,帧画面才能取得比较好的效果,所以工作量非常大,而且需要的时

19、间也比较多。而且需要的时间也比较多。其次:用动画播放程序来播放每一帧画面,当每一帧都比较小时可以一其次:用动画播放程序来播放每一帧画面,当每一帧都比较小时可以一次将所有帧都读入内存,然后按照一定时间间隔连续显示每一帧画面。次将所有帧都读入内存,然后按照一定时间间隔连续显示每一帧画面。onDrawonDraw函数函数CFrameDoc*pDoc=GetDocument();CFrameDoc*pDoc=GetDocument();if(flag)/if(flag)/当播放时当播放时pDC-SetStretchBltMode(COLORONCOLOR);/pDC-SetStretchBltMode

20、(COLORONCOLOR);/设置位图拉伸模式(采用保存彩设置位图拉伸模式(采用保存彩色位图颜色模式)色位图颜色模式)/将指定内存位置大小的位图在屏幕上显示出来将指定内存位置大小的位图在屏幕上显示出来pDC-StretchBlt(100,50,m_sizeDest.cx,m_sizeDest.cy,pDC-StretchBlt(100,50,m_sizeDest.cx,m_sizeDest.cy,&m_pdcMemoryindex,0,0,&m_pdcMemoryindex,0,0,m_sizeSource.cx,m_sizeSource.cy,SRCCOPY);m_sizeSource.c

21、x,m_sizeSource.cy,SRCCOPY);定义菜单及消息(定义菜单及消息(OnViewPlayOnViewPlay)if(flag)/if(flag)/如果如果flagflag为真,则播放动画,否则清屏为真,则播放动画,否则清屏flag=FALSE;flag=FALSE;Invalidate();Invalidate();elseelse flag=TRUE;flag=TRUE;增加定时器及响应消息(增加定时器及响应消息(onTimeronTimer)if(flag)if(flag)if(index=0)if(index=0)index=1;index=1;elseelseinde

22、x=0;index=0;Invalidate();Invalidate();初始化更新初始化更新m_pBitmap0.LoadBitmap(IDB_BITMAP1);/m_pBitmap0.LoadBitmap(IDB_BITMAP1);/将位置装入内存将位置装入内存m_pBitmap1.LoadBitmap(IDB_BITMAP2);m_pBitmap1.LoadBitmap(IDB_BITMAP2);for(int i=0;i2;i+)for(int i=0;i2;i+)CClientDC dc(this);/CClientDC dc(this);/创建关于窗口客户区的设备上下文创建关于窗

23、口客户区的设备上下文OnPrepareDC(&dc);/OnPrepareDC(&dc);/在调用屏幕显示的重绘函数前应先调用在调用屏幕显示的重绘函数前应先调用m_pdcMemoryi.CreateCompatibleDC(&dc);/m_pdcMemoryi.CreateCompatibleDC(&dc);/创建兼容的内存设备上下文创建兼容的内存设备上下文m_pdcMemoryi.SelectObject(&m_pBitmapi);/m_pdcMemoryi.SelectObject(&m_pBitmapi);/将位图选进内存设备上下文将位图选进内存设备上下文m_pBitmapi.GetOb

24、ject(sizeof(bm),&bm);/m_pBitmapi.GetObject(sizeof(bm),&bm);/得到位图的长和宽得到位图的长和宽m_sizeSource.cx=bm.bmWidth;/m_sizeSource.cx=bm.bmWidth;/初始化源块大小初始化源块大小m_sizeSource.cy=bm.bmHeight;m_sizeSource.cy=bm.bmHeight;m_sizeDest=m_sizeSource;m_sizeDest=m_sizeSource;/将源块大小赋予目标区域将源块大小赋予目标区域dc.DPtoLP(&m_sizeDest);dc.D

25、PtoLP(&m_sizeDest);/将设备坐标转换成逻辑坐标将设备坐标转换成逻辑坐标int nTimer=SetTimer(1,200,NULL);/int nTimer=SetTimer(1,200,NULL);/设置定时器设置定时器ASSERT(nTimer!=0);ASSERT(nTimer!=0);3 帧动画v3.23.2程序举例及说明程序举例及说明定义变量:定义变量:CFrameDoc*GetDocument();CFrameDoc*GetDocument();CDC m_pdcMemory2;CDC m_pdcMemory2;/设备上下文指针数组设备上下文指针数组CBitmap

26、 m_pBitmap2;CBitmap m_pBitmap2;/位图指针数组位图指针数组CSize m_sizeDest;CSize m_sizeDest;/目标区域大小目标区域大小CSize m_sizeSource;CSize m_sizeSource;/源块大小源块大小BOOL flag;BOOL flag;/标志,是否播放动画标志,是否播放动画int index;int index;/画面序号画面序号设置默认状态设置默认状态(View(View的构造函数中的构造函数中)Flag=FALSE;Flag=FALSE;Index=0;Index=0;4 块动画v4.1 4.1 块动画原理块动

27、画原理块动画又称为子画面动画、部分屏幕动画块动画又称为子画面动画、部分屏幕动画显示对象分成两部分:背景和前景显示对象分成两部分:背景和前景背景通过不发生变化,前景不断地运动、改变,只要将背景画一次,不断更新前背景通过不发生变化,前景不断地运动、改变,只要将背景画一次,不断更新前景就形成了块动画。景就形成了块动画。由于每次不需要刷新整个屏幕,而仅仅是一小部分,所以可以获得很高的动画速由于每次不需要刷新整个屏幕,而仅仅是一小部分,所以可以获得很高的动画速度。度。许多电脑游戏中能看到这种动画,如背景上面有坦克或飞机到处移动。许多电脑游戏中能看到这种动画,如背景上面有坦克或飞机到处移动。v4.2 4.2 块动画的制作过程块动画的制作过程准备好一幅背景图画和一幅前景图(子画面)准备好一幅背景图画和一幅前景图(子画面)显示背景图显示背景图确定子图画面将显示的位置,将可能被子画面覆盖的背景保存起来确定子图画面将显示的位置,将可能被子画面覆盖的背景保存起来显示子画面显示子画面更新位置变量更新位置变量恢复背景,并将新位置的背景保存起来;恢复背景,并将新位置的背景保存起来;在新位置显示子画面;在新位置显示子画面;返回第步。返回第步。4 块动画v4.3 4.3 程序举例及说明程序举例及说明提问与答疑!

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 考试专区 > 中考

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服