资源描述:
《Visual C++ 6.0实例教程 第5章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章图形操作内容摘要:CD和CDC类GDI和CGdiObject类绘图程序实例一绘图程序实例二返回目录5.1CD和CDC类学习目标1.了解设备环境(DeviceContext,简称DC)和设备环境类(CDC)2.利用设备环境类进行简单绘图5.1返回第5章使用设备环境类绘图的一个简单例子利用AppWizard生成基于对话框程序框架(BmpTest)添加画线和画椭圆的代码(OnPaint()函数)见下页代码解释:(1)CPaintDCdc(this);这句代码是生成一个CPaintDC类的实例dc,生成后就可以调用他的函数来进行绘图了。(2)dc.
2、MoveTo(30,30);调用dc的MoveTo函数把画线的起点定在对话框的(30,30)坐标点。MoveTo函数的一般调用格式为:MoveTo(intx,inty),其中参数x,y是要画直线的起始点坐标。(3)dc.LineTo(30,30);调用dc的LineTo函数画线到(100,100)坐标点。LineTo函数的一般调用格式为:LineTo(intx,inty),其中参数x,y是所画直线的终止点坐标。(4)dc.Ellipse(120,120,160,160);本句代码的作用是调用设备环境对象dc的画椭圆函数Ellipse画椭圆。Ell
3、ipse函数的一般调用格式为:Ellipse(LPCRECTlpRect),其中参数lpRect是所画椭圆的外接矩形。5.15.1voidCBmpTestDlg::OnPaint(){if(IsIconic()){CPaintDCdc(this);//devicecontextforpaintingSendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);//CentericoninclientrectangleintcxIcon=GetSystemMetrics(SM_CXICON);in
4、tcyIcon=GetSystemMetrics(SM_CYICON);CRectrect;GetClientRect(&rect);intx=(rect.Width()-cxIcon+1)/2;inty=(rect.Height()-cyIcon+1)/2;//Drawtheicondc.DrawIcon(x,y,m_hIcon);}else{CPaintDCdc(this);//devicecontextforpaintingdc.MoveTo(10,10);dc.LineTo(100,100);dc.Ellipse(120,120,160,
5、160);CDialog::OnPaint();}}2.1voidCBmpTestDlg::OnPaint(){if(IsIconic()){//与前一页代码相同;else{CPaintDCdc(this);//devicecontextforpaintingCPennewpen(PS_SOLID,1,RGB(0,255,0));CBrushnewbrush(RGB(0,0,255));CPen*pOldpen=dc.SelectObject(&newpen);CBrush*pOldbrush=dc.SelectObject(&newbrush)
6、;dc.MoveTo(10,10);dc.LineTo(100,100);dc.Ellipse(80,80,120,120);dc.SelectObject(pOldpen);dc.SelectObject(pOldbrush);CDialog::OnPaint();}}4.改变画图颜色5.1代码解释:1.CPennewpen(PS_SOLID,1,RGB(0,255,0));生成一支颜色为绿色、宽度为1个像素的实心画笔。2.CBrushnewbrush(RGB(0,0,255));生成一只颜色为蓝色的画刷。3.CPen*pOldpen=dc.S
7、electObject(&newpen);把刚生成的画笔选进设备环境对象dc,这样再画线就用新的笔了。当SelectObject函数的参数为画笔类型时,返回值为原来所用画笔的指针。4.CBrush*pOldbrush=dc.SelectObject(&newbrush);把刚生成的画刷选进设备环境对象dc。当SelectObject函数的参数为画刷类型时,返回值为原来所用画刷的指针。5.dc.SelectObject(pOldpen);绘图完毕后把原来的画笔再选进设备环境对象。6.dc.SelectObject(pOldbrush);绘图完毕后把
8、原来的画刷再选进设备环境对象。Cpen类的构造函数声明是:CPen(intnPenStyle,intnWidth,COLORREFcrC