C语言图形化编程基础入门

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

二、C 的图形模式编程

2.1图形编程基础

VC+EasyX 库里提供了图形函数就可以在VC 环境下进行图形编程。对图形函数的操作都是在视口(Viewport )上进行。用户可以在屏幕上定义大小不同的视口,若不定义视口大小,它就是整个屏幕。

视口是在图形屏幕状态下的概念,用户可访问的最小单位是一个像素(像素这一术语最初用来指显示器上最小的、单独的发光点单元。然而现在,其含义拓宽为指图形显示器上的最小可访问点)。文本与图形都可以在视口上显示。

图形视口的左上角坐标为(0,0)。

例如:分辨率为640*480的视口像素点的定位

显示器在图形模式下工作时,显示的单位是像素点,通过控制各像素点的颜色和灰度等级来形成图形。因此绘图的第一步是进行图形模式的初始化,系统进入绘图模式。

(1) initgraph() 图形初始化函数

用法: HWND initgraph(

int width,

int height,

int flag = NULL

);

示例:以下局部代码创建一个尺寸为 640x480 的绘图环境:

initgraph(640, 480);

例2-1:调用initgraph()设置640*480的图形模式,在屏幕中央显示如下的图形。

参考代码:

#include

#include

int main(){

initgraph(640, 480);

line(200, 240, 440, 240);

line(320, 120, 320, 360);

getch();

closegraph();

return 0;

}

[学习单步执行]

试着单步执行刚才的程序,由于绘图和多线程等因素的限制,请务必按照以下步骤尝试(熟练了以后就不用了):

1. 将VC取消最大化,并缩小窗口,能看到代码就行。

2. 按一下F10(单步执行),会看到屏幕上出现一个黄色的小箭头,指示将要执行的代码。

3. 当箭头指向initgraph()语句时,按F10,能看到窗口发生了变化。

4. 将新的绘图窗口和VC并排放,相互不要有覆盖。这步很重要,否则绘图内容将会被VC窗口覆盖。

5. F10执行getch后,记得激活绘图窗口,并按任意键,否则程序不会继续执行。

6. closegraph后,直接按F5执行全部剩余程序,结束。

单步执行很重要,可以让你知道程序执行到哪里是什么效果,哪条语句执行出了问题等等。

例2-2:更进一步,打印出分辨率,并在屏幕中央显示如下的图形

参考代码

#include

#include

#include

#define WIDTH 150 /*矩形的宽度*/

#define HEIGHT 100 /*矩形的高度*/

int startX,startY; /*矩形的左上角坐标*/

int maxX;

int maxY;

void init(); /*图形模式的初始化*/

void showText(); /*显示文本*/

void drawK(); /*画图形*/

int main(){

init();

showText();

drawK();

closegraph();

return 0;

}

void init(){

initgraph(640,480);

maxX = getmaxx();

maxY = getmaxy();

setbkcolor(BLACK); /*设置背景色为黑色*/

cleardevice(); /*清屏*/

}

void showText(){

char str[50];

sprintf(str,"(%d,%d)",maxX,maxY); /*将要显示的分辩率以字符串形式保存到str*/ outtextxy(maxX/4,maxY/4,str); /*在指定位置显示字符串str*/

}

void drawK(){

startX = (maxX-WIDTH)/2;

startY = (maxY-HEIGHT)/2;

setcolor(WHITE);

rectangle(startX,startY,startX+WIDTH,startY+HEIGHT);

setcolor(YELLOW);

line(startX,startY,startX+WIDTH,startY+HEIGHT);

line(startX+WIDTH,startY,startX,startY+HEIGHT);

setcolor(RED);

circle(maxX/2,maxY/2,30);

getch(); //暂停,任意健继续

}

例2-3:用若干个小矩形块画一个围墙的效果,如下图:

参考代码:

#include

#include

int maxX;

int maxY;

void init(){

initgraph(640,480);

maxX = getmaxx()+1;

maxY = getmaxy()+1;

}

相关文档
最新文档