首页 > 领导发言 > 2020年Windows编程实验报告

2020年Windows编程实验报告

2020-11-30 08:18:11

  Windows 编程实验报告 一、实验目的和要求

  1、了解 CDC 类的使用

  2、掌握常用绘图函数的使用

  3、学会设置字体

  4、掌握画笔和画刷的使用

  5、了解不同文本输出函数的用法 二、实验内容

  【程序 1】

  编写一个单文档的应用程序,在视图窗口中显示一行文本,要求文本颜色为红色,背景色为黄色。

  【程序 2】

  编写一个单文档的应用程序,在客户区使用不同的画笔和画刷绘制点、折线、曲线、圆角矩形、弧、扇形和多边形等几何图形。

  【程序 3】

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

  【程序 4】

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

  三、实验过程

  1 1 、void CTestView::OnDraw(CDC* pDC) {

  CTestDoc* pDoc=GetDocument();

  ASSERT_VALID(pDoc);

  // TODO: add draw code for native data here

  pDC->SetTextColor(RGB(255,,));

  pDC->SetBkColor(RGB(255,255,));

  pDC->TextOut(2,3,"红色字体,黄色背景!");

  } 结果如图

  2 2 、 编写一个应用程序 test ,在客户区使用不同的画笔和画刷绘制点、折线、曲线、圆角矩形、弧、扇形和多边形等几何图形。

  同理在 MFC 单文档

  OnDraw 函数中加入以下代码。

  void CTestView::OnDraw(CDC* pDC) {

  CTestDoc* 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,,));

  pDC->SelectObject(&penNew);

  pDC->SetPixel(CPoint(1,1),RGB(255,,));

  pDC->MoveTo(15,7);

  pDC->LineTo(3,1);

  pDC->LineTo(4,24);

  pDC->LineTo(2,27);

  pDC->MoveTo(5,1);

  pDC->Arc(2,2,2,3,2,25,2,2);

  pDC->RoundRect(45,1,6,2,3,3); pDC->Arc(1,3,3,5,3,4,2,3);

  pDC->MoveTo(3,4);

  pDC->LineTo(2,4);

  pDC->MoveTo(2,3);

  pDC->LineTo(2,4);

  POINT pt[6]={{4,3},{5,3},{55,385},{5,46},{4,46},{35,385},};

  pDC->Polygon(pt,6); }

  实验结果如图

  序 编写单文档应用程序 test ,在视图中显示三个圆,通过使用不同颜色的画笔及画刷来模拟交通红绿灯。

  在 MFC 单文档

  onDraw 函数中编写如下代码 void CTestView::OnDraw(CDC* pDC) {

  CTestDoc* pDoc=GetDocument();

  ASSERT_VALID(pDoc);

  // TODO: add draw code for native data here

  CPen *OldPen,NewPen;

  CBrush *OldBrush,NewBrush;

  COLORREF

  rgb[]={RGB(255,,),RGB(255,255,),RGB(,255,)};

  for(int i=;i<3;i++){

  NewBrush.CreateSolidBrush(rgb[i]);

  OldBrush=pDC->SelectObject(&NewBrush);

  pDC->Ellipse(7+1*i,7,15+1*i,15);

  NewBrush.DeleteObject();

  } } 结果如下

  代码如下

  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,,),RGB(255,255,),RGB(,255,)};

  for(int i=;i<3;i++){

  NewBrush.CreateSolidBrush(rgb[i]);

  OldBrush=pDC->SelectObject(&NewBrush);

  pDC->Ellipse(7+1*i,7,15+1*i,15);

  NewBrush.DeleteObject();

  } } 编写程序 test ,实现一行文本水平滚动显示,要求每个 周期文本为红、黄两种颜色,字体为宋、楷两种字体。

  void CTestView::OnDraw(CDC* pDC) {

  CTestDoc* pDoc=GetDocument();

  ASSERT_VALID(pDoc);

  // TODO: add draw code for native data here

  CFont *OldFont,NewFont;

  if(flag%2==)

  {

  pDC->SetTextColor(RGB(255,,));

  NewFont.CreatePointFont(2,"宋体",NULL);

  }

  if(flag%2==1)

  {

  pDC->SetTextColor(RGB(255,255,));

  NewFont.CreatePointFont(2,"楷体",NULL);

  }

  OldFont=pDC->SelectObject(&NewFont);

  pDC->TextOut(x,5,"漂移");

  pDC->SelectObject (OldFont);

  SetTimer(1,1,NULL);

  NewFont.DeleteObject(); } void CTestView::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=;

  flag++;

  }

  Invalidate();

  CView::OnTimer(nIDEvent); }

  四、实验总结

  这次的实验做的时间有点长,不过收获还是蛮多的,比如如何设置文本的字体、颜色等属性。其中很关键的是通过第五个实验使我了解到 OnTimer()函数的用法以及对 Invalidate()函数的使用。增加对windows 编程的兴趣。

  • 下载文档
  • 收藏
  • 0