C语⾔画图形(图形库graphics的使⽤)⽬录
⼯具
(1)环境:VC++
(2)库函数:graphics.h(因为不是标准库函数,所以需下载EASYX)
(3)编译软件:VS、VC++6.0
c语⾔基本绘图
本节⽬录:窗⼝的创建及背景颜⾊、基本绘图函数(点、线、圆、矩形以及设置其属性)
#include<stdio.h>
#include<graphics.h>//图形库
#include<time.h>//时间库函数
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<time.h>
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<graphics.h>//图形库
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);//将引号⾥的字符串转化为字符串并输出
}
c语⾔基本贴图
本节⽬录:基本绘图、图⽚⼤⼩问题、图⽚路径问题、批量加载图⽚
贴图putimage(int x,int y,&m);是把图⽚的左上⾓放到(x,y)
#include<graphics>
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)c语言如何去学
mouse =GetMouseMsg();//获取⿏标消息
switch(mouse){
case WM_MOUSEMOV:outtextxy(x,y,_T(""));//其他的动作可以⿏标右击查看
break;
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论