客户区中间绘制20个嵌套正方形,以步长dx,dy移动,进行碰撞检测,如果最大的正方形触到某个边界,就反方向运动,直接绘制和用双缓冲区实现,并观察不同

全局变量:int x0=200,x1=500;int y0=200,y1=500;int x2=200,x3=500;int y2=800,y3=800;int xMax=0; //最大矩形x坐标int flag=1; //0:左,1:右
void CHomeWork3View::OnDraw(CDC* pDC)
{CHomeWork3Doc* pDoc = GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for native data hereCPoint ptCenter;CRect rect;GetClientRect(&rect); //获得窗口客户区的大小ptCenter = rect.CenterPoint(); //获得矩形的中心点,目的是为了确定后面同心圆图像的圆心CDC menDC;                // 声明内存DCCBitmap NewBitmapmp;                  // 创建内存中存放临时图像的位图对象bmpmenDC.CreateCompatibleDC(pDC);     // 依附窗口DC(窗口对象为pDC),创建兼容内存DC(就是创建一个内存DC,所有图形先画在这上面)NewBitmapmp.CreateCompatibleBitmap(&menDC, rect.Width(), rect.Height());// 在兼容内存DC上,创建兼容位图menDC.SelectObject(&NewBitmapmp);                 // 将位图选入内存DCmenDC.FillSolidRect(rect, RGB(255,255,255));// 按照原有背景色填充客户区,否则会成为黑色,同时也使内存DC的背景色保持一致// 绘图操作int i;//正方形的数量int speed=7;//移动速度for(i=0;i<20;i++){CRect rect(x0+i*speed,y0+i*speed,x1-i*speed,y1-i*speed);menDC.Rectangle(&rect);CRect rect1(x2+i*speed,y2+i*speed,x3-i*speed,y3-i*speed);menDC.Rectangle(&rect1);if(i==19){xMax=x1-i*speed;}}pDC->BitBlt(0, 0, rect.Width(), rect.Height(),&menDC, 0, 0, SRCCOPY);     // 将内存DC上的图像复制到前台pDC,即实际屏幕对象pDCmenDC.DeleteDC();      // 删除内存DCNewBitmapmp.DeleteObject();      // 删除内存位图SetTimer(1, 10, NULL);
}
添加OnTime()函数
void CHomeWork3View::OnTimer(UINT nIDEvent)
{//获取客户区窗口大小CRect rt;GetClientRect(&rt);//判断移动方向if(flag) //flag=1 向右移动{x0+=5;x1+=5;x2+=5;x3+=5;}else     //flag=0 向左移动{x0-=5;x1-=5;x2-=5;x3-=5;}if(x0<=0){flag=1;}if(xMax>=rt.Width()-200){flag=0;}//刷新客户区Invalidate();     CView::OnTimer(nIDEvent);
}

计算机图形学——双缓冲相关推荐

  1. 4、计算机图形学——光栅化、抗锯齿、画家算法和深度缓冲算法(Z-buffer)

    一.光栅化(Rasterization) 1.1.概念 光栅raster这个词就是德语中屏幕的意思,光栅化的意思就是将图像绘制在屏幕上进行显示. 1.2.三角形光栅化过程简述 首先,为什么要以三角形的 ...

  2. 计算机图形学结课论文,计算机图形学结课论文精要.doc

    计算机图形学结课论文精要 2017届结课论文 <计算机图形学基础教程> -小球的弹跳运动 学生姓名 学 号 所属学院 专 业 计算机科学与技术 班 级 塔里木大学教务处制 目录 摘 要1 ...

  3. 计算机图形学实验二交互式绘制多边形

    一.实验目的 掌握双缓冲绘图技术. (2)掌握人机交互技术. (3)掌握填充动态多边形的有效边表算法. 二.实验步骤 (1)在VS2017环境下创建MFC应用程序工程(单文档) (2)添加命令消息处理 ...

  4. 计算机图形学在卫星的应用,计算机图形学课程设计教程-反走样卫星

    计算机图形学课程设计教程-反走样卫星 实 验 报 告 2016 年 4 月 28 日 第 3 节 综合 楼 426 号室 课程名称 计算机图形学课程设计 学生姓名 学号 专业与年级 2013级数字媒体 ...

  5. 计算机图形学 第9章 自由曲线曲面

    第8章不学 目录 # 学习目标 # 消隐 ## 定义 1.线框模型 2.表面模型 3.实体模型 双表结构 定义三维顶点类 定义表面类 读入立方体的点表 读入立方体的面表 1.柏拉图多面体 柏拉图多面体 ...

  6. 计算机图形学入门OpenGL

    计算机图形学openGL 计算机图形学:(Computer Graphics, 简称CG) 简单得说:计算机图形学是一种使用数学算法将二维或者三维图形转化为计算机显示器所能显示的二维栅格形式的科学. ...

  7. 计算机图形学名词解释

    最近跟着UC Berkeley的课程学习计算机图形学,名词好多... 3D 三维(three dimension).客观世界中静止的物体都是三维的,在计算机图形学中常在一定的坐标系中用(x,y,z)坐 ...

  8. 二维图形几何变换(计算机图形学)

    说明:本实验代码在vs2022下可正常运行,本实验适配于计算机图形学新版(VC++ MFC )第二版 1.实验目的 1)掌握3*3矩阵乘法运算的编程实现 2)掌握平移,比例,旋转三种基本二维几何变换矩 ...

  9. vtk教程第七章 高级计算机图形学

    第三章介绍了计算机图形学的基本概念.那一章的主要主题是如何使用表面原语(如点.线和多边形)表示和渲染几何.在本章中,我们主要关注体积图形.与表面图形相比,体图形在呈现非均匀材料方面具有更大的表达范围, ...

最新文章

  1. python怎么画简单图片-python中简单易学的绘图:用turtle画太极图
  2. 正确理解python中二分查找
  3. vb6 串口同时读取写入数据怎么避免冲突_实例:S7-200 SMART通过Modbus-RTU读取温湿度传感器数据...
  4. java pojo使用_在POJO中使用ThreadLocal进行Java嵌套事务
  5. mysql事务编号_Mysql事务
  6. Blazor编辑表单状态控件
  7. RPC原来就是Socket——RPC框架到dubbo的服务动态注册,服务路由,负载均衡演化...
  8. IPSEC 001 --- 原理简介
  9. crossover卸载 linux,Ubuntu中卸载CrossOver困难?那是你没学会这个命令
  10. 三菱GXWorks2 程序写入CPU之前准备工作
  11. 【VHDL】半减器和全减器的设计
  12. QuickTimePlayer 多倍速播放及多倍速后无声音
  13. Bitmap 图片缩放
  14. 计算机机房通风,机房为什么要装通风系统?
  15. 心路历程 部分感想
  16. Prometheus源码系列:指标缓存(scrapeCache)
  17. iOS:多效果的CategoryView
  18. 用FPGA做一个生日礼物
  19. JointJS几个实用功能的简单实现
  20. Amadis发布OLA支付处理标准

热门文章

  1. java生成 excel 并导出文件
  2. vaadin_学习Vaadin了
  3. 线性回归的其它计算方法
  4. 坚果pro2MIUI10修改按键功能
  5. Android MTK 6750 系统语言与输入法
  6. Talend API Tester:安装、主要功能、缺点
  7. Python 带你花式过情人节
  8. 和计算机做朋友教案,与计算机交朋友教案设计.pdf
  9. GNS3-保姆式安装教程
  10. MySQL触发器+游标应用