Windows编程实验报告
题 目:专 业:班 级:学 号:姓 名:指导老师:
图形与文本 2014年10月19日
一、实验目的 熟悉MFC技术中图形和文本的使用。 二、实验环境 Windows7操作系统,VC++6.0 三、实验内容 【程序1:】 编写一个单文档的应用程序,在视图窗口中显示一行文本,要求文本颜色为红色,背景色为黄色。 关键代码:
void CSy2_1View::OnDraw(CDC* pDC) { CSy2_1Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here CString outstr = \显示一行文本\ pDC->SetBkColor(RGB(255,255,0)); pDC->SetTextColor(RGB(255,0,0)); pDC->TextOut(100,100,outstr); }
结果截图:
【程序2:】 编写一个单文档的应用程序,在客户区使用不同的画笔和画刷绘制点、折线、曲线、圆角矩形、弧、扇形和多边形等几何图形。
关键代码:
void CSy2_2View::OnDraw(CDC* pDC) { CSy2_2Doc* pDoc = GetDocument();
1
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here CPen *PenOld,PenNew;
CBrush *BrushOld,BrushNew;
COLORREF rgbColor[] = {RGB(255,0,0),RGB(0,255,0),RGB(0,0,255),RGB(255,255,0)}; //画一个矩形
PenNew.CreatePen(PS_SOLID,4,rgbColor[1]); BrushNew.CreateSolidBrush(rgbColor[3]); PenOld = pDC->SelectObject(&PenNew); BrushOld = pDC->SelectObject(&BrushNew); pDC->Rectangle(20,200,200,300); PenNew.DeleteObject(); BrushNew.DeleteObject();
//画一个椭圆弧线
PenNew.CreatePen(PS_DASH,1,rgbColor[0]); BrushNew.CreateSolidBrush(rgbColor[2]); pDC->SelectObject(&PenNew); pDC->SelectObject(&BrushNew);
pDC->Arc(20,200,200,300,200,250,20,200); PenNew.DeleteObject(); BrushNew.DeleteObject();
//画一个扇形
PenNew.CreatePen(PS_SOLID,1,rgbColor[2]); BrushNew.CreateSolidBrush(rgbColor[0]); pDC->SelectObject(&PenNew); pDC->SelectObject(&BrushNew);
pDC->Pie(420,120,540,240,520,160,420,180); PenNew.DeleteObject(); BrushNew.DeleteObject();
//画一条折线
PenNew.CreatePen(PS_SOLID,1,rgbColor[2]); pDC->SelectObject(&PenNew);
POINT pt[3]={{10,100},{50,60},{120,80}}; pDC->Polyline(pt,3); PenNew.DeleteObject();
//画一个点
pDC->SetPixel(CPoint(150,150),rgbColor[0]); //画一个圆角矩形
PenNew.CreatePen(PS_SOLID,1,rgbColor[1]); BrushNew.CreateSolidBrush(rgbColor[2]); pDC->SelectObject(&PenNew);
2
pDC->SelectObject(&BrushNew);
pDC->RoundRect(210,210,410,410,30,30); PenNew.DeleteObject(); BrushNew.DeleteObject();
//画一条曲线
PenNew.CreatePen(PS_SOLID,1,rgbColor[1]); pDC->SelectObject(&PenNew);
POINT pt1[4] = {{20,100},{50,60},{120,80},{150,160}}; pDC->PolyBezier(pt1,4); PenNew.DeleteObject();
//画一个多边形 PenNew.CreatePen(PS_SOLID,1,rgbColor[2]); BrushNew.CreateSolidBrush(rgbColor[1]); pDC->SelectObject(&PenNew); pDC->SelectObject(&BrushNew); POINT pt2[4] = {{130,100},{160,60},{220,80},{250,160}}; pDC->Polygon(pt2,4); PenNew.DeleteObject(); BrushNew.DeleteObject(); pDC->SelectObject(PenOld); pDC->SelectObject(BrushOld); }
结果截图:
3
【程序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 CFont *OldFont,NewFont; LOGFONT MyFont = {30,25,0,0,0,1,1,0,ANSI_CHARSET, }
OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,\黑体\NewFont.CreateFontIndirect(&MyFont); OldFont = pDC->SelectObject(&NewFont); CRect rect;
rect.SetRect(CPoint(150,150),CPoint(250,250)); pDC->DrawText(\pDC->SelectObject(OldFont); NewFont.DeleteObject();
结果截图:
4