77范文网 - 专业文章范例文档资料分享平台

VC++6.0入门第五章 图形和文本输出(6)

来源:网络收集 时间:2018-12-29 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

VC++6简明教程

NewBrush2.CreateHatchBrush(HS_DIAGCROSS,RGB(200,200,200)); pDC->SelectObject(&NewBrush2); pDC->Rectangle(165,90,210,135); //创建45度左下右上阴影线线

NewBrush3.CreateHatchBrush(HS_FDIAGONAL,RGB(200,200,200)); pDC->SelectObject(&NewBrush3); pDC->Rectangle(210,90,255,135); //创建垂直相交阴影线 NewBrush4.CreateHatchBrush(HS_CROSS,RGB(200,200,200)); pDC->SelectObject(&NewBrush4); pDC->Rectangle(120,135,165,175); //创建水平阴影线

NewBrush5.CreateHatchBrush(HS_HORIZONTAL,RGB(200,200,200)); pDC->SelectObject(&NewBrush5); pDC->Rectangle(165,135,210,175); //创建垂直阴影线

NewBrush6.CreateHatchBrush(HS_VERTICAL,RGB(200,200,200)); pDC->SelectObject(&NewBrush6); pDC->Rectangle(210,135,255,175); //画饼图

pDC->SelectStockObject(BLACK_PEN); CBrush RedBrush,BlueBrush,YellowBrush; RedBrush.CreateSolidBrush(RGB(255,0,0)); pDC->SelectObject (&RedBrush); pDC->Pie(10,100,100,190, (int)(55+45*cos(2*Pi/3)),(int)(145+45*sin(2*Pi/3)), (int)(55+45*cos(0)),(int)(145+45*sin(0))); BlueBrush.CreateSolidBrush(RGB(0,255,255)); pDC->SelectObject (&BlueBrush); pDC->Pie(10,100,100,190, (int)(55+45*cos(4*Pi/3)),(int)(145+45*sin(4*Pi/3)), (int)(55+45*cos(2*Pi/3)),(int)(145+45*sin(2*Pi/3))); YellowBrush.CreateSolidBrush(RGB(255,255,0)); pDC->SelectObject (&YellowBrush); pDC->Pie(10,100,100,190, (int)(55+45*cos(0)),(int)(145+45*sin(0)), (int)(55+45*cos(4*Pi/3)),(int)(145+45*sin(4*Pi/3))); }

26

第5章 图形与文本输出

实验 实验1:

设计一个窗口,在窗口中输出一行文字,每一行的文字相继出现后又消失,而且每一行文字的字体按\楷体_GB2312\、\宋体\、\隶书\、\黑体\、\幼圆\循环变化,字号由8到50线性增长,颜色由RGB(0,0,0) 到RGB(255,0,0)线性增长,运行效果如图5-15所示:

图5-15 Ex5_1 运行效果

实验步骤:

1. 使用AppWizard创建一个单文档MFC(EXE程序) Ex5_1 2. 视图类增加成员变量记录坐标并初始化

(1) 选择WorkSpace的ClassView标签,右键单击CEx5_1View类。

(2) 在弹出的快捷菜单中选择Add Member Variable菜单项,按下表增加公有成员变量。

表5-13

变量类型 int int CString int int int 变量名 nColorSign; nFirst; OutStr; nFontSign; OutStrLen; nFontHeight; 0 0 风声雨声读书声声声入耳 0 OutStr .GetLength() 8 初始值 说明 控制颜色值 文本串开始位置 输出文本串 控制字体 文本串长度 字体大小

(3) 在CEx5_1View类的构造函数CEx5_1View()中为表中变量设定初始化值。 3. 在OnDraw()函数中添加代码,设定颜色字体并输出文本串

程序清单5-17:在视图中输出文本串的OnDraw()函数 void CEx5_1View::OnDraw(CDC* pDC) { CEx5_1Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc);

27

VC++6简明教程

// TODO: add draw code for native data here pDC->SetTextColor (nColorSign%5);//根据nColorSign线性设置颜色 CString chfont; // 表示字体 switch(nFontSign%5)//根据nFontSign的值选择字体 {case 0:chfont=\楷体_GB2312\ case 1:chfont=\宋体\ case 2:chfont=\隶书\ case 3:chfont=\黑体\ case 4:chfont=\幼圆\ } CFont NewFont; //创建新字体 NewFont.CreateFont (nFontHeight,10,0,0,0,false,false,false, GB2312_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH|FF_DONTCARE, chfont);

pDC->SelectObject (NewFont); //输出从nFirst开始的文本串 pDC->TextOut(100,150, OutStr.Mid(nFirst)); }

4. 设定定时器,使文本串从左到右滚动,并改变颜色和字体

(1) 打开ClassWizard,选择Message Map标签,Class Name列表中选择CEx5_1View,Object IDS

列表中选择CEx5_1View,Messages列表中选择OnActiveView,单击“Add Function”按钮。 (2) 单击“Edit Code”按钮,添加处理代码,设置定时器。

程序清单5-18:设置定时器

void CEx5_1View::OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView) { // TODO: Add your specialized code here and/or call the base class SetTimer( 1, 350, NULL); CView::OnActivateView(bActivate, pActivateView, pDeactiveView); }

(3) 打开ClassWizard,选择Message Map标签,Class Name 选择列表中CEx5_1View,Object IDS

列表中选择CEx5_1View,Messages列表中选择WM_TIMER,单击“Add Function”按钮。 (4) 单击“Edit Code”按钮,添加处理代码,实现动态文本串。

28

第5章 图形与文本输出

程序清单5-19:实现动态文本串

void CEx5_1View::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default nFirst=nFirst+2; //设置文本串开始位置,向前走一个汉字 if(nFirst>=OutStrLen)//文本串开始位置归0,并修改字体和颜色 { nFirst=0; nColorSign+=20; nFontSign++; if(nFontHeight==40) nFontHeight=8; else nFontHeight=nFontHeight+8; } this->Invalidate (true); CView::OnTimer(nIDEvent); }

5. 编译并运行程序

实验2:

编写程序Ex5_2实现以下功能:程序运行时,窗口显示字符串信息;在窗口中双击鼠标左键时,更新显示的字符串内容和位置,同时在窗口中央显示一组同心圆;然后在窗口中双击鼠标右键时,清除窗口中显示的同心圆,返回程序启动时的状态。操作要求如下:

(1) 当程序启动时,在窗口的左下角显示信息“双击鼠标左键,,显示同心圆”。如图5-16所示。 (2) 在窗口双击鼠标左键时,窗口中心显示一组同心圆,半径依次为120, 80和40个像素;在窗口

的右下角显示信息“双击鼠标右键,清除同心圆”。如图5-17 所示。 (3) 双击鼠标右键后,窗口回到启动时的状态。

(4) 反复双击鼠标的左键和右键,窗口状态反复变化。

图5-16 图5-17

29

VC++6简明教程

实验步骤:

1. 使用AppWizard创建一个单文档MFC(EXE程序)

(1) 在Visual C++主菜单栏中选择File->New菜单项,打开New对话框 。

(2) 选择Project标签,并在该标签页中选择MFC AppWizard(exe)选项,在Project name编辑框中

输入工程文件名为Ex5_2,单击OK。

(3) 在MFCAppWizard-Step1对话框中,选择“Single Document”选项,工程的语言采用中文。 (4) 在MFCAppWizard-Step4对话框中,取消对工具栏、状态栏以及打印和打印预览的支持。单击

“Finish”完成应用程序框架文件的创建。

2. 视图类增加int型公有成员变量m_flag,并在构造函数中初始化为0

3. 在OnDraw()函数中添加代码,在窗口中实现文本串输出,并调用绘图实现绘图 操作要求如下:

(1) 当m_flag为0时,在窗口的左下角显示信息“双击鼠标左键,显示同心圆”。 (2) 当m_flag为1时,在窗口的右下角显示信息“双击鼠标右键,清除同心圆”。并且在窗口的中

央绘制一组同心圆,半径依次为120,80,40。 参考程序如下:

程序清单5-20:在视图中央绘制同心圆的OnDraw函数

void CEx5_2View::OnDraw(CDC* pDC) { CEx5_2Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here CRect rect; this->GetClientRect(rect); //获得当前客户区 if(m_flag) { //在客户区的右下角输出文本串 pDC->TextOut(rect.Width()-200 ,rect.Height()-20,\双击鼠标右键清除同心圆\ // 设置客户区中心位置为原点 pDC->SetViewportOrg(rect.Width()/2,rect.Height()/2); //输出同心圆 pDC->Ellipse(-120,-120,120,120); pDC->Ellipse(-80,-80,80,80); pDC->Ellipse(-40,-40,40,40); } else pDC->TextOut(0,rect.Height()-20,\双击鼠标左键,显示同心圆\ }

4. 为视图类增加鼠标左键双击的消息映射,修改m_flag 的值为1,更新视图

(1) 打开ClassWizard,选择Message Map标签,Class Name 列表中选择CEx5_2View,Object IDS

列表中选择CEx5_2View,Messages列表中选择WM_LBUTTONDBLCLK,单击“Add Function”按钮,添加鼠标左键双击消息映射。

(2) 单击“Edit Code”按钮,添加处理代码,修改m_flag的值为1,并设置无效区域,刷新视图。

30

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库VC++6.0入门第五章 图形和文本输出(6)在线全文阅读。

VC++6.0入门第五章 图形和文本输出(6).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/395611.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: