第2章(2) VC++ 绘制图形
- 格式:ppt
- 大小:145.50 KB
- 文档页数:19
VC++图像应用——绘制图形一、利用线条绘制多边形/利用线条绘制多边形和弧线1.创建一个单文档/视图结构的应用程序2.1在视图类的OnDraw编写如下代码1.点击文件→选择新建→选择MFC APP ;填写工程名;点击确认→2.选择单文档→点击完成void CMy854View::OnDraw(CDC* pDC){CMy854Doc* pDoc = GetDocument();ASSERT_VALID(pDoc);CPen pen(PS_SOLID,2,RGB(255,0,0));CPen*pOldPen=pDC->SelectObject(&pen);//矩形pDC->MoveTo(50,30);pDC->LineTo(240,30);pDC->LineTo(240,120);pDC->LineTo(50,120);pDC->LineTo(50,30);//多边形pDC->MoveTo(300,50);pDC->LineTo(400,50);pDC->LineTo(450,100);pDC->LineTo(400,150);pDC->LineTo(300,150);pDC->LineTo(250,100);pDC->LineTo(300,50);//椭圆CRect rc(500,50,600,100);pDC->Arc(500,50,600,100,520,70,560,30);CBrush brush(RGB(255,0,0));pDC->FrameRect(rc,&brush);pDC->SelectObject(pOldPen);}2.2程序3.成功运行程序二、利用制表位控制文本输出/将字符中的制表符按照指定的宽度转换为空格输出1.创建一个单文档/视图结构的应用程序2.1在视图类的OnDraw编写如下代码1.点击文件→选择新建→选择MFC APP ;填写工程名;2.点击确认→选择单文档→点击完成void CMy854View::OnDraw(CDC* pDC){CMy854Doc* pDoc = GetDocument();ASSERT_VALID(pDoc);CRect rc(20,100,80,160);pDC->Rectangle(rc);CRect RndRC(20,100,80,160);pDC->RoundRect(RndRC,CPoint(10,10));CPointpts[6]={CPoint(300,50),CPoint(400,50),CPoint(4 50,100),CPoint(400,150),CPoint(300,150),CPoin t(250,100)};pDC->Polygon(pts,6);}2.2程序3.成功运行程序三、绘制空件外观/在窗口中绘制空件1.创建一个单文档/视图结构的应用程序2.1在视图类的OnDraw编写如下代码3.点击文件→选择新建→选择MFC APP ;填写工程名;点击确认→4.选择单文档→点击完成void CMy854View::OnDraw(CDC* pDC){CMy854Doc* pDoc = GetDocument();ASSERT_VALID(pDoc);CRect rc(50,50,120,80);pDC->DrawFrameControl(rc,DFC_BUTTON ,DFCS_BUTTONPUSH);CRect CapRC(130,50,160,80);pDC->DrawFrameControl(CapRC,DFC_CAP TION,DFCS_CAPTIONHELP);CRect ScrollRC(170,50,200,80);pDC->DrawFrameControl(ScrollRC,DFC_SC ROLL,DFCS_SCROLLCOMBOBOX);}2.2程序3.成功运行程序四、填充图形区域/填充区域的方法1.创建一个单文档/视图结构的应用程序2.1在视图类的OnDraw编写如下代码1.点击文件→选择新建→选择MFC APP ;填写工程名;点击确认→2.选择单文档→点击完成void CMy854View::OnDraw(CDC* pDC){CMy854Doc* pDoc = GetDocument();ASSERT_VALID(pDoc);CRect rc(30,40,100,120);CBrush brush(RGB(128,128,128));pDC->FillRect(rc,&brush);brush.DeleteObject();CBitmap bmp;bmp.LoadBitmap(IDB_BK);brush.CreatePatternBrush(&bmp);CRect bmpRC(110,40,200,120);pDC->FillRect(bmpRC,&brush);bmp.DeleteObject();brush.DeleteObject();CRect rectrc(170,50,200,80);CRect hrc(280,60,350,140);pDC->Rectangle(rectrc);pDC->Rectangle(hrc);HRGNhRect=CreateRectRgn(210,40,300,120);HRGNhrgn=CreateRectRgn(280,60,350,140);HRGN hret=CreateRectRgn(0,0,0,0);CombineRgn(hret,hRect,hrgn,RGN_AND);brush.CreateSolidBrush(RGB(255,0,0));CRgn rgn;rgn.Attach(hret);pDC->FillRgn(&rgn,&brush);brush.DeleteObject();rgn.Detach();DeleteObject(hRect);DeleteObject(hrc);DeleteObject(hret);}2.2程序3.添加位图IDB_BK4.成功运行程序。
第二章VC6.0简单绘图说明许多学编程的都是从C 语言开始入门的,而目前的现状是:有些学校以Turbo C 为环境讲C 语言,只是Turbo C 的环境实在太老了,复制粘贴都很不方便。
有些学校直接拿VC 来讲C 语言,因为VC 的编辑和调试环境都很优秀,并且VC 有适合教学的免费版本。
可惜在VC 下只能做一些文字性的练习题,想画条直线画个圆都很难,还要注册窗口类、建消息循环等等,初学者会受严重打击的。
初学编程想要绘图就得用TC,很是无奈。
还有计算机图形学,这门课程的重点是绘图算法,而不是Windows 编程。
所以,许多老师不得不用TC 教学,因为Windows 绘图太复杂了,会偏离教学的重点。
新的图形学的书有不少是用的OpenGL,可是门槛依然很高。
要给初学者一个简单的学习平台,就要VC的开发平台和TC的简单的绘图功能,于是就有了这个EasyX 库,我们需要在VC下下载安装EasyX库,下载地址:http:///。
下面是VC下简单绘图函数的基本说明。
1.系统支持操作系统版本:Windows 2000 及以上系统。
编译环境版本:Visual C++ 6.0 / 2008(x86 & x64) / 2010(x86 & x64)。
2.安装请先将下载的压缩包解压缩,然后执行Setup.hta,并跟随提示安装。
安装程序会检测已经安装的VC 版本,并根据选择将对应的.h 和.lib 文件安装至VC 的include 和lib 文件夹内。
安装程序不会修改注册表或者本机的任何文件。
如果需要手动安装,请根据下面的文件列表说明将安装包里的相关文件分别复制到VC 对应的include 和lib 文件夹内,或者将include 和lib 文件夹放到任意位置,然后修改VC 中的Lib 和Include 的引用路径。
3.卸载由于安装程序并不改写注册表,因此在“添加删除程序”中不会看到EasyX 的卸载项。
VC基本绘图文档[键入作者姓名]VC基本绘图文档设计一个矢量图形绘制程序一、运行环境:Microsoft Visual C++ 6.0二、目标与任务:1.使设计的程矢量绘制图形序具有画点、画线、画多边形、画矩形的功能;2.其中所绘制的点、线、多边形具有保存的功能,并且能保存入数据库,数据库采用的access,文件名为shp.mdb,在设计的程序中使用ODBC访问数据库,DSN=shp,无同户名与密码;3.设计的绘图程序能读入数据库中的记录,而且可以通过自己建立的菜单[数据库操作]的子菜单[记录集导出]导出,显示在自己事先设计好的对话框设置中4.建立的[设置]菜单功能,其子菜单有[点的大小]、[线的宽度]功能。
三、程序总体结构图:四、各个功能模块详细设计1.画点画点流程图画点主要代码:2.画线画线主要代码:3.画矩形画矩形主要代码:4.画多边形画多边形的主要代码:五、数据库设计说明1.构造数据库,数据库采用access,.建立数据表,文件名为shp.mdb如下图5.2.创建ODBC数据源Windows中的ODBC组件出现系统的“控制面板”管理工具中,如下图所示:双击ODBC图标,进入ODBC数据源管理器。
然后创建用户用户DNS,过程如下下图:单击“添加”按钮,弹出创建数据源对话框,按下图选择用户所需的驱动程序(如下图):单击“完成”按钮进入指定驱动程序的安装对话框,单击“选择”按钮,将前面创建的数据库调入,结果如下图所示:单击“确定”按钮。
3.在自己的绘图MFC中绑定数据源建立新的类CShpSet类,其基类是CRecordset,单击“OK”,进入选择数据源对话框,按下图进行选择:如下图进入选择数据表对话框,选择自己已经建立过的shp.mdb数据表,如下图所示:单击“OK”,完成绑定数据源。
6.在MFC中建立显示此记录集对话框,其设计如下图所示:添加基于上图对话框的相应的类DisplayDataBaseDlg,其基类是CDlg,用于显示记录集,并建立相应的数据库操作菜单,用来显示记录集。
图形设备接口(GDI)与设备描述表(DC)图形设备接口(GDI)许多MS-DOS程序都直接往视频存储区或打印机端口输送数据,这种做法的不利之处在于需要对每种显示卡或打印机类型提供相应的驱动程序。
Windows则提供了一抽象的接口,称之为图形设备接口(GDI)。
Windows 己经提供了各种显示卡及打印机的驱动程序,这样我们的程序就可以不必关心与系统相连的显示卡及打印机的类型。
我们的程序可以通过调用GDI函数和硬件打交道,而各种GDI函数会自动参考被称为设备环境(CDC)的数据结构。
Windows会自动将设备环境结构映射到相应的物理设备,并且会提供正确的输入输出指令。
设备描述表(DC)在Windows环境中,各程序的输出必须限制在自己的窗口中。
GDI使用一种简单的机制保证在窗口中画图的各程序遵循这个规则。
这种机制即为设备描述表(DC);当Windows程序在屏幕、打印机或其它设备上画图时,它并不是将像素直接输出到设备上,而是将图绘制到由设备描述表表示的逻辑意义上的"显示平面"上去。
设备描述表是深寓于Windows中的一种数据结构,它包含GDI需要的所有关于显示平面情况的描述字段,包括相连的物理设备和各种各样的状态信息。
设备描述表对象在使用MFC编制Windows程序时,设备描述表具有更加突出的作用。
除了可作为通往各种设备的桥梁之外,设备描述表对象还封装了程序用来产生输出的GDI函数。
在MFC中,你不用捕获设备描述表句柄和调用GDI输出函数,至少不必直接捕获和调用,而是通过创建一设备描述表对象并调用它的成员函数来画图。
设备描述表句柄在平面上画图之前,Windows程序从GDI获取设备描述表句柄,并在每次调用完GDI输出函数时将句柄返回给GDI。
在MFC应用程序中获取设备描述表的一种方法是调用CWnd::GetDC,它返回指向表示Windows设备描述表的CDC对象的指针。
在画图完毕,要用CWnd::ReleaseDC释放指针(注:在OnPaint处理程序中,不用显示调用这两个函数)CDC派生类为了避免获取和释放设备描述表所带来的麻烦,MFC提供了一些CDC派生类,如CPaintDC,CClientDC,CWindowDC这些类被设计为可直接进行实例化。
VC绘图/游戏简易教程--1:创建新项目 (1)VC绘图/游戏简易教程--2:简单绘图,学习单步执行 (1)VC绘图/游戏简易教程--3:熟悉更多的绘图语句 (2)VC绘图/游戏简易教程--4:结合流程控制语句来绘图 (3)VC绘图/游戏简易教程--5:数学知识在绘图中的运用 (5)VC绘图/游戏简易教程--6:实现简单动画 (6)VC绘图/游戏简易教程--7:捕获按键,实现动画的简单控制8 VC绘图/游戏简易教程--8:用函数简化相同图案的制作 (10)VC绘图/游戏简易教程--9:绘图中的位运算 (12)VC绘图/游戏简易教程--10:用鼠标控制绘图/游戏程序 (16)VC绘图/游戏简易教程--11:随机函数 (18)VC绘图/游戏简易教程--12:数组 (20)VC绘图/游戏简易教程--13:getimage / putimage / loadimag / saveimage / IMAGE 的用法 (25)VC绘图/游戏简易教程--14:位运算实现颜色分离处理 (27)VC绘图/游戏简易教程--16:设备上下文句柄 (29)VC绘图/游戏简易教程--1:创建新项目输入以下代码试试(无需理解代码含义):#include <graphics.h>#include <conio.h>void main(){initgraph(640, 480);line(200, 240, 440, 240);line(320, 120, 320, 360);getch();closegraph();}执行后应该可以看到屏幕正中央有一个十字。
VC绘图/游戏简易教程--2:简单绘图,学习单步执行[本期目标]学会简单绘图,并学会简单调试。
先看看上一课的代码,我加上了注释#include <graphics.h> // 绘图库头文件,绘图语句需要#include <conio.h> // 控制台输入输出头文件,getch()语句需要void main(){initgraph(640, 480); // 初始化640x480的绘图屏幕line(200, 240, 440, 240); // 画线(200,240) - (440,240)line(320, 120, 320, 360); // 画线(320,120) - (320,360)getch(); // 按任意键closegraph(); // 关闭绘图屏幕}解释一下:1. 创建的绘图屏幕640x480,表示横向有640个点,纵向有480个点。
第二章VC6.0简单绘图说明许多学编程的都是从C 语言开始入门的,而目前的现状是:有些学校以Turbo C 为环境讲C 语言,只是Turbo C 的环境实在太老了,复制粘贴都很不方便。
有些学校直接拿VC 来讲C 语言,因为VC 的编辑和调试环境都很优秀,并且VC 有适合教学的免费版本。
可惜在VC 下只能做一些文字性的练习题,想画条直线画个圆都很难,还要注册窗口类、建消息循环等等,初学者会受严重打击的。
初学编程想要绘图就得用TC,很是无奈。
还有计算机图形学,这门课程的重点是绘图算法,而不是Windows 编程。
所以,许多老师不得不用TC 教学,因为Windows 绘图太复杂了,会偏离教学的重点。
新的图形学的书有不少是用的OpenGL,可是门槛依然很高。
要给初学者一个简单的学习平台,就要VC的开发平台和TC的简单的绘图功能,于是就有了这个EasyX 库,我们需要在VC下下载安装EasyX库,下载地址:http:///。
下面是VC下简单绘图函数的基本说明。
1.系统支持操作系统版本:Windows 2000 及以上系统。
编译环境版本:Visual C++ 6.0 / 2008(x86 & x64) / 2010(x86 & x64)。
2.安装请先将下载的压缩包解压缩,然后执行Setup.hta,并跟随提示安装。
安装程序会检测已经安装的VC 版本,并根据选择将对应的.h 和.lib 文件安装至VC 的include 和lib 文件夹内。
安装程序不会修改注册表或者本机的任何文件。
如果需要手动安装,请根据下面的文件列表说明将安装包里的相关文件分别复制到VC 对应的include 和lib 文件夹内,或者将include 和lib 文件夹放到任意位置,然后修改VC 中的Lib 和Include 的引用路径。
3.卸载由于安装程序并不改写注册表,因此在“添加删除程序”中不会看到EasyX 的卸载项。