VC6绘图技术:橡皮筋效果实现与异或擦除

需积分: 42 53 下载量 61 浏览量 更新于2024-08-07 收藏 5.47MB PDF 举报
"VC6.0绘图功能、橡皮筋技术、交互式绘图、计算机图形学、C++编程、MFC框架" 计算机图形学是计算机科学的重要组成部分,涉及图像的生成、处理和显示。在VC6.0的环境中,我们可以利用其交互式绘图技术实现一些高级功能,比如"橡皮筋"技术,这是一种动态绘制直线的方法,常用于鼠标移动过程中。这项技术的核心在于利用了绘图模式R2_NOT,它能擦除之前绘制的内容,使得图形随着鼠标的移动而实时更新。 在MFC框架下,我们可以在视图类的OnMouseMove()函数中实现橡皮筋技术。当用户移动鼠标时,先调用SetROP2(R2_NOT)设置绘图模式,然后重新绘制上一次的位置,从而擦除旧图形,接着绘制新的图形位置。例如,以下代码片段展示了如何在C++中实现这一过程: ```cpp void CCGTest002View::OnMouseMove(UINT nFlags, CPoint point) { if(m_iFlag == 0) { // 绘制直线 if(this->ilstep == 1) { CDC *pDC = GetDC(); // 获得设备上下文 pDC->SetROP2(R2_NOT); // 设置绘图模式 DrawLine(pDC, lTmpPoint1, lTmpPoint2); // 擦除上次图形 DrawLine(pDC, lTmpPoint1, point); // 绘制新位置图形 lTmpPoint2 = point; // 更新第二点位置 ReleaseDC(pDC); // 释放设备上下文 } } } ``` 在鼠标按下事件OnLButtonDown()中,我们需要初始化起点和终点,以便开始绘制过程。这些变量通常需要在视图窗口类中定义: ```cpp void CCGTest002View::OnLButtonDown(UINT nFlags, CPoint point) { if(m_iFlag == 0) { // m_iFlag 作为标识符 if(this->ilstep == 0) { // ilstep 作为拾取点的步骤 lTmpPoint1 = point; // 第一点 lTmpPoint2 = point; // 第二点,初始与第一点相同 this->ilstep = 1; // 开始拾取第二点 } } } ``` 学习计算机图形学不仅可以理解计算机如何生成图形,还能为CAD、动画、虚拟现实等领域打下基础。书中提到,计算机图形学涵盖了广泛的定义和应用,包括几何图形和图像的区分,以及它们在不同领域的应用。区分图形和图像有助于理解计算机图形学的基本概念,图形通常由数学描述,而图像可能包含自然景象或照片。在实际应用中,这两者之间的界限日益模糊,但理解它们的区别对于深入学习计算机图形学至关重要。