C语言可视化编程学习笔记(三)

基本的贴图操作

绘图篇

项目文件夹中存放图片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;
}
  • 10
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值