计算机图形学实验报告—图形与文本(2)

2019-08-20 20:38

【程序4:】 编写一个单文档的应用程序,在视图窗口中显示3个圆,通过使用不同颜色的画笔以及画刷来模拟交通红绿灯。

关键代码:

void CTest2View::OnDraw(CDC* pDC) { CTest2Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here CPen *PenOld,PenNew; CBrush *BrushOld,BrushNew;

PenOld = (CPen *) pDC->SelectStockObject(BLACK_PEN);//使用库存黑色画笔 BrushNew.CreateSolidBrush(RGB(255,0,0));//红色 BrushOld=pDC->SelectObject(&BrushNew); CRect rect1(0,0,100,100); pDC->Ellipse(&rect1);

BrushNew.DeleteObject();//每次使用完新画刷,释放掉新画刷 BrushNew.CreateSolidBrush(RGB(255,255,0));//黄色 pDC->SelectObject(&BrushNew); CRect rect2(0,100,100,200); pDC->Ellipse(&rect2); BrushNew.DeleteObject();

BrushNew.CreateSolidBrush(RGB(0,255,0));//绿色 pDC->SelectObject(&BrushNew); CRect rect3(0,200,100,300); pDC->Ellipse(&rect3); BrushNew.DeleteObject(); //恢复系统默认的GDI对象 pDC->SelectObject(PenOld); pDC->SelectObject(BrushOld); }

结果截图:

5

【程序5:】 编写一个单文档的应用程序,在视图窗口实现一行文本的水平滚动显示,要求每个周期文本为红、黄两种颜色,字体为宋、楷两种字体。

关键代码: public:

bool flag;//用于标记当前文本颜色字体状态 int x; //用于指定文本的起始位置 //初始化变量

CSy2_5View::CSy2_5View() {

x=0;//文字滚动起点 flag=1;//标记当前文字出于哪种状态,初始定为宋体红字 // TODO: add construction code here }

void CSy2_5View::OnDraw(CDC* pDC) { CSy2_5Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here SetTimer(0,100,NULL);//启动定时器,每隔0.1秒执行一次任务 CString outString=\滚动的文字\ COLORREF strRgb[]={RGB(255,0,0),RGB(255,255,0)};

6

}

pDC->SetBkMode(TRANSPARENT);//设置背景模式 CRect r1;

GetClientRect(&r1);//获取当前客户区的矩形大小赋值给r1 CFont *OldFont,NewFont; if( flag == 1) {

NewFont.CreatePointFont(200,\宋体\pDC->SetTextColor(strRgb[0]);

OldFont=pDC->SelectObject(&NewFont); pDC->TextOut(0+x,0,outString); pDC->SelectObject(OldFont); NewFont.DeleteObject();

if(x>=r1.right) //如果大于视图边界就切换文本颜色和字体属性,令flag=0; { x=0; flag=0; } }

if( flag == 0) { }

NewFont.CreatePointFont(200,\楷体\pDC->SetTextColor(strRgb[1]);

OldFont=pDC->SelectObject(&NewFont); pDC->TextOut(0+x,0,outString); pDC->SelectObject(OldFont); NewFont.DeleteObject(); if(x>=r1.right) { x=0; flag=1; }

//定义定时器

void CSy2_5View::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default this->Invalidate();//重绘视图窗口 x+=10; CView::OnTimer(nIDEvent); }

结果截图:

7

四、实验总结 本次实验熟悉了Windows编程的基本操作,并且初步掌握了利用GDI绘制图形和文本的方法,是一次很有意义的上机训练。

8


计算机图形学实验报告—图形与文本(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《锦州我心目中的世园》讲演稿

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: