收藏 分销(赏)

MFC图形与文本实验.doc

上传人:仙人****88 文档编号:9375905 上传时间:2025-03-24 格式:DOC 页数:6 大小:198.04KB
下载 相关 举报
MFC图形与文本实验.doc_第1页
第1页 / 共6页
MFC图形与文本实验.doc_第2页
第2页 / 共6页
点击查看更多>>
资源描述
实验二 图形与文本 一、 实验目的和要求 1、了解CDC类的使用 2、掌握常用绘图函数的使用 3、学会设置字体 4、掌握画笔和画刷的使用 5、了解不同文本输出函数的用法 二、 实验内容 1、编写程序Sy2_1,在客户区显示一行文本,要求文本颜色为红色、背景为黄色。 如下图所示: 代码如下 void CSy2_1View::OnDraw(CDC* pDC) { CSy2_1Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here pDC->SetTextColor(RGB(255,0,0)); pDC->SetBkColor(RGB(255,255,0)); pDC->TextOut(20,30,"红色字体,黄色背景!"); } 2、 编写一个应用程序Sy2_2,在客户区使用不同的画笔和画刷绘制点、折线、曲线、圆角矩形、弧、扇形和多边形等几何图形。 如图 代码如下: void CSy2_2View::OnDraw(CDC* pDC) { CSy2_2Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here CPen *penOld,penNew; CBrush *brushOld,brushNew; penNew.CreatePen(PS_SOLID,5,RGB(255,0,0)); pDC->SelectObject(&penNew); pDC->SetPixel(CPoint(100,100),RGB(255,0,0)); pDC->MoveTo(150,70); pDC->LineTo(300,100); pDC->LineTo(400,240); pDC->LineTo(200,270); pDC->MoveTo(500,100); pDC->Arc(20,200,200,300,200,250,20,200); pDC->RoundRect(450,100,600,200,30,30); pDC->Arc(100,300,300,500,300,400,200,300); pDC->MoveTo(300,400); pDC->LineTo(200,400); pDC->MoveTo(200,300); pDC->LineTo(200,400); POINT pt[6]={{400,300},{500,300},{550,385},{500,460},{400,460},{350,385},}; pDC->Polygon(pt,6); } 3、 编写Sy2_3,利用函数CreateFontIndirect()创建黑色字体,字体高度为30像素,宽度为25像素,并利用函数DrawText()在客户区以该字体输出文本“VC++”。 如图 代码如下: void CSy2_3View::OnDraw(CDC* pDC) { CSy2_3Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here CRect rect; rect.SetRect(CPoint(50,60),CPoint(300,200)); CFont*OldFont,NewFont; LOGFONT MyFont={ 30,25,0,0,0,0,0,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH, "黑体" }; NewFont.CreateFontIndirect(&MyFont); OldFont=pDC->SelectObject(&NewFont); pDC->DrawText("VC++",&rect,DT_WORDBREAK|DT_CENTER); NewFont.DeleteObject(); } 4、 编写单文档应用程序Sy2_4,在视图中显示三个圆,通过使用不同颜色的画笔及画刷来模拟交通红绿灯。 如图: 代码如下: void CSy2_4View::OnDraw(CDC* pDC) { CSy2_4Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here CPen *OldPen,NewPen; CBrush *OldBrush,NewBrush; COLORREF rgb[]={RGB(255,0,0),RGB(255,255,0),RGB(0,255,0)}; for(int i=0;i<3;i++){ NewBrush.CreateSolidBrush(rgb[i]); OldBrush=pDC->SelectObject(&NewBrush); pDC->Ellipse(70+100*i,70,150+100*i,150); NewBrush.DeleteObject(); } } 5、 编写程序Sy2_5,实现一行文本水平滚动显示,要求每个周期文本为红、黄两种颜色,字体为宋、楷两种字体。 如图 代码如下: void CSy2_5View::OnDraw(CDC* pDC) { CSy2_5Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here CFont *OldFont,NewFont; if(flag%2==0) { pDC->SetTextColor(RGB(255,0,0)); NewFont.CreatePointFont(200,"宋体",NULL); } if(flag%2==1) { pDC->SetTextColor(RGB(255,255,0)); NewFont.CreatePointFont(200,"楷体",NULL); } OldFont=pDC->SelectObject(&NewFont); pDC->TextOut(x,50,"漂移"); pDC->SelectObject (OldFont); SetTimer(1,10,NULL); NewFont.DeleteObject(); } void CSy2_5View::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default x++; CClientDC dc(this); CRect rect; GetClientRect(&rect); if(x>=rect.right) { x=0; flag++; } Invalidate(); CView::OnTimer(nIDEvent); } 三、 实验总结 这次的实验做的时间有点长,不过收获还是蛮多的,比如如何设置文本的字体、颜色等属性。其中很关键的是通过第五个实验使我了解到OnTimer()函数的用法以及对Invalidate()函数的使用。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服