基本的贴图操作
绘图篇
项目文件夹中存放图片m.jpg
#include<stdio.h>
#include<stdlib.h>
#include<graphics.h>//该图形库仅能显示jpg和bmp格式的照片
/*
1.基本绘图
1.1 IMAGE m; 定义一个图片变量
1.2 loadimage(&m,"路径") 把资源加载到路径中
1.3 putimage(int x,int y,&m); 把图片显示到屏幕上
1.4 图片大小问题
1.4.1 改变窗口大小去适应图片
1.4.2 缩放加载图片去适应窗口
loadimage(&m,"路径",int width,int height);
1.4.3 通过图片变量获取图片大小
1.5 图片路径问题
1.5.1 绝对路径 由于转义的问题采用反斜杠或者双斜杠
1.5.2 相对路径
1.6 素材内容过多,采用数组去加载
批量加载,名字的格式化处理
*/
int main(void)
{
IMAGE m;
//将属性改为宽字节
//loadimage(&m, "m.jpg",650,450); //缩放图片去适应窗口
//通过图片变量去获取图片大小
loadimage(&m, "m.jpg");
int width = m.getwidth();
int height = m.getheight();
initgraph(width, height);
putimage(0, 0, &m);
getchar();
closegraph();
return 0;
}
资源的批量加载
项目文件夹:
#define _CRT_SECURE_NO_WARNINGS
#include<graphics.h>
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
IMAGE img[5];
//用循环的方式去做批量加载
for (int i = 1; i <= 5; i++)
{
char fileName[20] = "";
sprintf(fileName, "%d.jpg", i);
loadimage(&img[i - 1], fileName,544,816);
}
initgraph(544,816);
int count = 0;
while (1)
{
putimage(0, 0, &img[count++]);
Sleep(500);
if (count == 5)
count = 0;
}
getchar();
closegraph();
return 0;
}
鼠标操作
通过鼠标的点击进行图片的切换
#define _CRT_SECURE_NO_WARNINGS
#include<graphics.h>
#include<stdio.h>
#include<stdlib.h>
/*
鼠标点击能给计数机反馈一个值
1. 声明鼠标消息变量
MOUSEMSG m;
2. 获取窗口鼠标消息
m=GetMouseMsg();
3. 分类处理鼠标消息
m.uMsg的类型去做分析
switch(m.uMsg)
{
case WM_MOUSEMOVE:
break;
}
4. 能够通过鼠标消息获取鼠标的坐标
m.x m.y
*/
int main(void)
{
IMAGE img[5];
//用循环的方式去做批量加载
for (int i = 1; i <= 5; i++)
{
char fileName[20] = "";
sprintf(fileName, "%d.jpg", i);
loadimage(&img[i - 1], fileName, 544, 816);
}
initgraph(544, 816);
int count = 0;
putimage(0, 0, &img[count]);
MOUSEMSG m;
while (1)
{
m = GetMouseMsg();
switch (m.uMsg)
{
//case WM_MOUSEMOVE:
// putpixel(m.x, m.y, RED);
// break;
case WM_LBUTTONDOWN:
count++;
putimage(0, 0, &img[count]);
if (count == 4)
count = 0;
break;
}
}
getchar();
closegraph();
return 0;
}
贴图过程中的文字输出
#include<stdio.h>
#include<graphics.h>
#include<stdlib.h>
int main(void)
{
initgraph(300, 400);
IMAGE m;
loadimage(&m, "4.jpg",300,400);
//int width = m.getwidth();
//int height = m.getheight();
//initgraph(width, height);
putimage(0, 0, &m);
//去掉文字背景
setbkmode(TRANSPARENT);//设置背景为透明的方式
settextcolor(RED);
settextstyle(25, 0, "STXINGKA");
outtextxy(100, 100, "嘻嘻,女神!");
getchar();
closegraph();
return 0;
}
去背景贴图
牵涉到掩码图和背景图使用不同的贴图方式 SCRAND与SCRPRINT
#include<stdio.h>
#include<graphics.h>
#include<stdlib.h>
/*
透明贴图:
1.准备背景图和掩码图;
2.SRCAND方式去贴掩码图;
3.SRCPRINT方式去贴背景图;
*/
int main(void)
{
initgraph(300, 400);
IMAGE m;
IMAGE dog;
loadimage(&m, "4.jpg", 300, 400);
loadimage(&dog, "dog.jpg", 100, 100);
//int width = m.getwidth();
//int height = m.getheight();
//initgraph(width, height);
putimage(0, 0, &m);
putimage(200, 300, &dog);
//去掉文字背景
setbkmode(TRANSPARENT);//设置背景为透明的方式
settextcolor(RED);
settextstyle(25, 0, "STXINGKA");
outtextxy(100, 100, "嘻嘻,女神!");
getchar();
closegraph();
return 0;
}