当前位置: 首页 > news >正文

EASYX图片操作

easyx学习网址
建议使用谷歌搜索引擎搜索相关的资料
eg1:图片显示到桌面

#include <stdio.h>
#include <easyx.h>
#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#define PI 3.14int main() {// 绘制图片initgraph(1200, 480);IMAGE img;// EASYX不支持透明图片,loading表示的是加载图片loadimage(&img, "F:/picture/background.jpg");// putimage的作用第一个参数表示X轴的位置,第二个参数表示Y轴的位置,第三个参数表示要绘制的对象指针putimage(0, 0, &img);IMAGE imgBear;/*加载&imgBear表示对象指针,第二个参数表示对象路径,第三个参数表示的是拉伸的高度,第四个参数表示拉伸的宽度,最后一个参数表示适应图片大小*/loadimage(&imgBear, "F:/picture/bear.png", 100, 235,true);putimage(530, 180, &imgBear);getchar();closegraph();return 0;}

在这里插入图片描述eg2:使用 三元光栅操作解决图片透明问题

#include <stdio.h>
#include <easyx.h>
#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#define PI 3.14/*将绘制透明图片的代码绘制成函数第一个参数和第二个参数表示x和y的坐标第三个参数表示合体掩码的对象指针第四个参数表示image的对象指针
*/
void putTransparentImage(int x, int y, const IMAGE* mask, const IMAGE* img) {putimage(x, y, mask, SRCAND);putimage(x, y, img, SRCPAINT);
}
int main() {/*任何的颜色与黑色做或运算其结构任然是其颜色本身剪影图片与绿色背景进行与运算得到绿色背景绿色背景与剪影的黑背熊主体进行或运算的到熊的主体背景*/initgraph(1200, 480);IMAGE imgBackground;loadimage(&imgBackground, "F:/picture/background.jpg");IMAGE imgMask;loadimage(&imgMask, "F:/picture/mask.jpg");IMAGE imgBear;loadimage(&imgBear, "F:/picture/bear.png");// 调用putimage函数将背景图片绘制到窗体上putimage(0, 0, &imgBackground);// 使用掩码与窗体中的图像进行与运算putimage(530, 180, &imgMask, SRCAND);// 将熊的本体与窗体中的函数进行或运算putimage(530, 180, &imgBear, SRCPAINT);getchar();closegraph();return 0;}

使用光栅运输的效果如下所示
在这里插入图片描述eg3:实现动画效果让图片跑起来

图片的存储路径
在这里插入图片描述
在这里插入图片描述
透明图片背景存储位置
在这里插入图片描述
相关代码如下所示

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <easyx.h>
#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#define PI 3.14
// 宏定义
#define BEAR_FRAMES 11
// 函数封装,让熊和背景图片完美的结合到一起
void putTransparentImage(int x, int y, const IMAGE* mask, const IMAGE* img) {putimage(x, y, mask, SRCAND);putimage(x, y, img, SRCPAINT);
}int main() {initgraph(1200, 480);setbkcolor(WHITE);cleardevice();IMAGE imgBackground;loadimage(&imgBackground, "F:/picture/background.jpg");// 创建一个image类型的数组指针并且里面包含11个数据IMAGE imgArrBearFrames[BEAR_FRAMES];// 使用for循环对该数组进行遍历  int num =  sizeof(imgArrBearFrames[BEAR_FRAMES]) / sizeof(imgArrBearFrames[0]);// 将图片加载到image对象当中for (int i = 0; i < BEAR_FRAMES; i++) {// 创建字符数组char strImgPath[100];// 将图片的路径保存到给字符数组当中strImgPath,占位符百分号d会被参数I替换sprintf(strImgPath, "F:/picture/beer/frames/bear%d.png", i);// sprintf函数用于组合变换的部分和不变的部分loadimage(&imgArrBearFrames[i], strImgPath);}// 使用同样的方式对掩码的图片进行加载IMAGE imgArrBearMarsks[BEAR_FRAMES];for (int i = 0; i < BEAR_FRAMES; i++) {// 创建字符数组存储图片char strImgPath[100];// 将图片的路径添加到字符数组中sprintf(strImgPath, "F:/picture/beer/masks/bearmask%d.png", i);// 第一个参数是保存图像的对象指针,第二个参数是图片的地址loadimage(&imgArrBearMarsks[i], strImgPath);}// 轮播一组图片实现熊在路上跑步的效果int frame = 0; // 图片数组的下标int x = -150; // 熊的x坐标// 批量绘图函数BeginBatchDraw();while (1) {cleardevice();// 绘制背景图片putimage(0, 0, &imgBackground);// 绘制熊的一帧透明图片putTransparentImage(x, 180, &imgArrBearMarsks[frame], &imgArrBearFrames[frame]);// 将缓存区中的图片绘制到屏幕上FlushBatchDraw();frame++;x += 10; // x = x + 10;if (frame >= 11) {frame = 0;}if (x >= 1200 + 150) {x = -150;}Sleep(50);}// 结束EndBatchDraw()函数,结束批量绘图EndBatchDraw();return 0;}

实现熊从左边跑到右边并且无限循环
在这里插入图片描述
在这里插入图片描述

http://www.lryc.cn/news/217740.html

相关文章:

  • 多测师肖sir_高级金牌讲师__adb命令
  • 块级作用域的理解
  • 【GitLab、GitLab Runner、Docker】GitLab CI/CD 应用
  • Linux文本编辑器vim使用和配置详解
  • 港科夜闻|香港科大戴希教授被选为腾讯公司新基石研究员
  • 如何读懂深度学习python项目,以`Multi-label learning from single positive label`为例
  • 【面试】Kafka基础知识
  • 【入门Flink】- 06Flink作业提交流程【待完善】
  • Linux 上的轻量级浏览器
  • 肆[4],滤波
  • Python 包管理器入门指南
  • 2022年06月 Python(三级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • 配置Raspberry自动连接WIFI,在无法查看路由器的校园网情况下使用自己电脑热点
  • #stm32整理(一)flash读写
  • windows10编译高版本openssl
  • Mac之NVM|通过brew安装、更新、卸载、重新安装nvm
  • react的状态管理有哪些方法?
  • AST注入-从原型链污染到RCE
  • 【开题报告】基于uniapp的在线考试小程序的设计与实现
  • 使用pdf2image pdf转图片
  • 非关系型数据库Redis的安装【Linux】及常用命令
  • 【React】02.create-react-app基础操作
  • gcc -static 在centos stream8 和centos stream9中运行报错的解决办法
  • 【UE5 Cesium】actor随着视角远近来变化其本身大小
  • vue-render函数的三个参数
  • 数据结构与算法(Java版) | 排序算法的介绍与分类
  • Java 实现uniapp本机手机号一键登录
  • 树莓派使用Nginx搭建web网站内存利用太低了?高效远程访问试试结合内网穿透进行
  • 基于SSM的搬家预约系统
  • (论文阅读13/100)R-CNN minus R