《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