(1)环境:VC++
(2)库函数:graphics.h(因为不是标准库函数,所以需下载EASYX)
(3)编译软件:VS、VC++6.0
本节目录:窗口的创建及背景颜色、基本绘图函数(点、线、圆、矩形以及设置其属性)
#include
#include //图形库
#include //时间库函数
int main(){
//注意窗口的横纵坐标原点是左上角
(1)窗口的创建及背景颜色
①窗口的创建
initgraph(int width,int hight);//创建窗口
closegraph();//关闭窗口
②设置背景颜色
setbkcolor(RED);cleardevice();//参数可以为颜色的英文,记住需要刷新窗口才能显示设置后的颜色
setbkcolor(RGB(int x,int y,int z));cleardevice();//或者可以调制三原色,记住需要刷新窗口才能显示设置后的颜色
(2)基本绘图函数
①绘点
putpixel(int x,int y,color color);//参数为横纵坐标和颜色
//如何随机生成点呢
#include
srand((unsigned int)time(NULL));//设置随机点的种子
int x = rand()%n;//rand()是生成随机数,然后对n取余,则得到的所有的x值都小于等于n
int y = rand()%n;
putpixel(x,y,color);
②绘线
line(int x1,int y1,int x2,int y2);//两点确定一条直线
//如何设置线的属性呢(注意必须写在画线函数的前面)
setlinecolor(color color);//参数可以是颜色,也可以是三原色
setlinestyle(linestyle linestyle,int width);//参数linestyle可以点进去库函数查看,可以设置虚线、直线....,width是线的宽度
③矩形
rectangle(int x1,int y1,int x2,int y2);//两点确定一个矩形
④圆
circle(int x,int y,int r);//圆心的横纵坐标和圆的半径
⑤填充(实心填充(不渲染边的颜色)、全部填充)
//圆的填充
setfillcolor(color color);//先设置填充颜色
//全部填充
fillcircle(int x,int y,int r);//参数横纵坐标和半径
//实心填充
solidcircle(int x,int y,int r);
//矩形的填充
略
}
#include
#include //图形库
int main(){
文字输出:
(1)输出文字
函数outtextxy(int x,int y,"jiajia");
注意:多字节报错
修改方式:
①outtextxy(int x,int y,L"jiajia");
②outtextxy(int x,int y,_T("jiajia"));
③outtextxy(int x,int y,"jiajia");//修改项目属性,将“字符集”修改为使用多字节字符集
(2)文字格式
setcolor(BLACK);//文字颜色
settextstyle(int width,int hight,"文字字体(例如黑体)");//文字的宽和高,以及文字的字体,字体路径:C:\Windows\Fonts\
setbkmode(TRANSPARENT);//文字背景透明
(3)输出数字(注意,输出数字的方法是将数字转换为字符串去输出)
char str[1000];//首先定义一个字符数组
int x = 20;//需要输出的数字
sprintf(str,"输出数字x = %d",x);//将引号里的字符串转化为字符串并输出
}
本节目录:基本绘图、图片大小问题、图片路径问题、批量加载图片
贴图putimage(int x,int y,&m);是把图片的左上角放到(x,y)
#include
#include
int main(){
(1)基本绘图
注意:图片变量获取图片地址时一定在变量前面加上取地址符
IMAGE m;//定义图片变量
loadimage(&m,"m.jpg(或者m.png)",int width,int hight);//将图片的地址赋给m(注意:width和hight为图片的宽和高)
putimage(int x,int y,&m);//参数为图片要放在窗口的坐标和m(即图片的地址)
(2)图片大小问题
解决方法有以下两种
①缩放图片的大小(即长宽)去适应窗口
②通过图片变量区域获取图片的大小
IMAGE m;
int width = m.getwidth;
int hight = m.gethight;
③直接去查看图片的属性
(3)图片路径问题(相对路径、绝对路径)
①相对路径
loadimage(&m,"m.jpg(或者m.png)");//此时的图片就在当前项目的文件下,可以直接这样引用
②绝对路径(即图片的当前位置)
loadimage(&m,"C:/Users/Administration/Desktop/m.jpg(或者m.png)");//C:\Users\Administrator\Desktop(电脑中的地址),由于转义字符问题的存在,在这里我们的绝对地址使用反斜杠'/'或者双斜杠'\\'
(4)批量加载图片
IMAGE image[100];
for(int i = 1 ;i < n ;i++){//n为需要加载出来的图片数量
char imageName[100] = "";
sprintf(imageName,"%d.jpg");//图片名字需要手动更改为1、 2、 3 、4...n
loadimage(&image[i - 1],imageName[i - 1]);
putimage(x,y,&image[i]);
(5)透明贴图
步骤:
①准备背景图和掩码图//注意制作背景图和掩码图时白色部分一定要纯白,黑色部分一定要纯黑
②SRCAND方式去贴掩码图
③SRCPAIND方式去贴背景图
示例:
loadimage(&background,"background.jpg(或者m.png)");
loadimage(&mask,"mask.jpg(或者m.png)");
putimage(x,y,&mask,SRCAND);//SRCAND方式去贴掩码图
putimage(x,y,&background,SRCPAIND);//SRCPAIND方式去贴背景图
}
本节目录:
int main(){
(1)鼠标操作
步骤:
MouseMsg mouse;//声明一个鼠标消息变量(mousemessage)
mouse = GetMouseMsg();//获取鼠标消息
switch(mouse){
case WM_MOUSEMOV:outtextxy(x,y,_T(""));//其他的动作可以鼠标右击查看
break;
}
}