《Windows C 图形程序设计》

教学演示 3.0

JXYS3.0 用点函数刷新窗口;

  用点、线、矩形、椭圆、椭圆弧函数绘制图形。

    WCTCS.cpp   WCTCS1.cpp   WCTCS.exe   WCTCS1.exe 

 1.语句

 1.用点函数黄绿青色水平垂直扫描刷新全屏
   水平垂直黄绿青色扫描刷新全屏
   for(y=y0-300;y<y0+300;y++)
   {
   for(x=x0-400;x<x0+400;x++)
   {
   SetPixel(hdc,int(x),int(y),RGB(255,200,0));
   }
   }

 1.1 输出窗口标题 DrawText“Visual C++ 6.0 Windows C 图形程序设计 fsxss”
   RECT rt;
   GetClientRect(hWnd, &rt);
   DrawText(hdc, szWCTCS, strlen(szWCTCS), &rt, DT_CENTER);

 2. 绘制矩形和圆形
   矩形紫色边框线
   hPen=CreatePen(fnPenStyle,nPenWidth,crPenColor);
   SelectObject(hdc,hPen);
   Rectangle(hdc,int(x0-395),int(y0-245),int(x0+395),int(y0+245));

   四边小圆框
   for(x=x0-370;x<x0+360;x+=15)
   {
   y=y0-220;
   Ellipse(hdc,int(x),int(y),int(x+20),int(y+20));
   }

   中心圆形
   for(x=x0-300;x<x0+300;x+=200)
   {
   y=y0-100;
   Ellipse(hdc,int(x),int(y),int(x+200),int(y+200));
   }

 2.1 绘制水平和垂直轴线
   for(y=y0-220;y<y0+220;y+=0.01)
   {
   for(x=x0;x<x0+2;x++)
   {
   SetPixel(hdc,int(x),int(y),RGB(0,255,0));
   }
   }

 2.2 水平青色扫描刷新窗口(保留部分小圆边框)
   for(y=y0-214.0;y<y0+214.0;y++)
   {
   for(x=x0-362.0;x<x0+362.0;x++)
   {
   SetPixel(hdc,int(x),int(y),RGB(0,150,150));
   }
   }

 3. 用点函数在矩形的白底上绘制红绿蓝边框线
   for(x=x0-390.0;x<x0+390.0;x+=0.01)
   {
   for(y=y0-240.0;y<y0-238.0;y++)
   {
   SetPixel(hdc,int(x),int(y),RGB(255,0,0));
   }
   }

 4. 绘制圆形和圆弧
   椭圆形
   Ellipse(hdc,int(x0-360),int(y0-210),int(x0+360),int(y0+210));

   水平排放两圆
   for(x=x0-325;x<x0+320.0;x+=328)
   {
   Ellipse(hdc,int(x),int(y0-162),int(x+324),int(y0+162));
   }

  圆弧曲线
   hPen=CreatePen(fnPenStyle,nPenWidth,crPenColor);
   SelectObject(hdc,hPen);
   for(x=x0-323;x<x0+320.0;x+=329)
   {
   Arc(hdc,int(x),int(y0-ym),int(x+160.0),int(y0+ym),
   int(x+160.0),int(y0),int(x),int(y0));
   Arc(hdc,int(x+160.0),int(y0-ym),int(x+320.0),int(y0+ym),
   int(x+160.0),int(y0),int(x+320.0),int(y0));
   }

 4.1 绘制水平和垂直轴线

 4.2 垂直黄色扫描刷新窗口

 5. 用椭圆弧函数绘制正弦波
   hPen=CreatePen(fnPenStyle,nPenWidth,crPenColor);
   SelectObject(hdc,hPen);
   for(ym=90.0;ym<=180.0;ym+=30.0)
   {
   for(x=x0-314.0;x<x0+314.0;x+=314.0)
   {
   Arc(hdc,int(x),int(y0-ym),int(x+157.0),int(y0+ym),
   int(x+157.0),int(y0),int(x),int(y0));
   Arc(hdc,int(x+157),int(y0-ym),int(x+314.0),int(y0+ym),
   int(x+157),int(y0),int(x+314.0),int(y0));
   }
   }

 5.1 绘制水平和垂直轴线

 5.2 水平青色扫描刷新大窗口(保留标题)

 5.3 绘制紫绿青边框线

 6. 用点函数绘制水平线和直方图
   for(x=x0-314.0;x<x0+314.0;x+=0.1)
   {
   for(y=y0+100.0;y<y0+115.0;y++)
   {
   SetPixel(hdc,int(x),int(y),RGB(0,255,0));
   }
   }
   for(y=y0+100;y>y0-118;y-=0.1)
   {
   for(x=x0-50;x<x0+50;x++)
   {
   SetPixel(hdc,int(x),int(y),RGB(255,255,0));
   }
   }

 6.1 垂直黄色扫描刷新窗口

 7. 用直线函数绘制五角星
   MoveToEx(hdc,int(x0),int(y0-200),NULL);  // 起点第1个角点
   LineTo(hdc,int(x0+120),int(y0+160));     // 画至第3个角点
   LineTo(hdc,int(x0-190),int(y0-60));      // 画至第5个角点
   LineTo(hdc,int(x0+190),int(y0-60));      // 画至第2个角点
   LineTo(hdc,int(x0-120),int(y0+160));     // 画至第4个角点
   LineTo(hdc,int(x0),int(y0-200));         // 画至第1个角点

 7.1 保留紫绿青边框,水平青色扫描刷新窗口

 8. 绘制小窗口边框和扫描刷新小窗口

 8.1 绘制左窗口边框和扫描刷新窗口
   for(x=x01-184;x<x01+184;x+=0.01)
   {
   for(y=y0-220;y<y0-218;y++)
   {
   SetPixel(hdc,int(x),int(y),RGB(255,0,255));
   }
   }

   for(y=y0-214;y<y0+214;y+=0.3)
   {
   for(x=x01-178;x<x01+178;x++)
   {
   SetPixel(hdc,int(x),int(y),RGB(0,180,180));
   }
   }

 8.2 绘制右上窗口边框和扫描刷新窗口
   for(x=x02-184;x<x02+184;x+=0.01)
   {
   for(y=y01-107;y<y01-105;y++)
   {
   SetPixel(hdc,int(x),int(y),RGB(0,255,0));
   }
   }

   for(x=x02-178;x<x02+178;x+=0.2)
   {
   for(y=y01-101;y<y01+101;y++)
   {
   SetPixel(hdc,int(x),int(y),RGB(255,0,0));
   }
   }

 8.3 绘制右下窗口边框和扫描刷新窗口

 9. 绘制右上窗口五角星和右下窗口水平线直方图

 9.1 用直线函数绘制右上窗口五角星图形

 9.2 用点函数绘制右下窗口水平线和直方图

 10.输出左窗口文本 DrawText
TextOut(hdc, 90,int(y0-180),"Windows C 图形程序设计",22);
TextOut(hdc, 50,int(y0-150)," 1. 用点函数黄绿青色水平垂直扫描刷新全屏",40);
TextOut(hdc, 50,int(y0-120)," 2. 绘制矩形和圆形",18);
TextOut(hdc, 50,int(y0-90), " 3. 用点函数在矩形的白底上绘制红绿蓝边框线",42);
TextOut(hdc, 50,int(y0-60), " 4. 绘制圆形和圆弧",18);
TextOut(hdc, 50,int(y0-30), " 5. 绘制正弦波,半波数5,幅高80,120,160",41);
TextOut(hdc, 50,int(y0),    " 6. 绘制正弦波,半波数9,17,53个,幅高40",39);
TextOut(hdc, 50,int(y0+30), " 7. 用点函数绘制水平线和直方图",30);
TextOut(hdc, 50,int(y0+60), " 8. 用直线函数绘制五角星",24);
TextOut(hdc, 50,int(y0+90), " 9. 绘制小窗口边框和扫描刷新小窗口",34);
TextOut(hdc, 50,int(y0+120),"10. 绘制右上窗口五角星和右下窗口水平线直方图",44);
TextOut(hdc, 50,int(y0+150),"11. 输出左窗口文本",18);
TextOut(hdc,150,int(y0+180),"佛山 谢山水 2003.5.5.",21);

 2.程序源代码 WCTCS.cpp

 3.程序可执行文件 WCTCS.exe

 4.程序运行结果图形 WCTCS.gif