EASYX图片操作

news2024/12/28 13:14:24

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.14

int 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.coloradmin.cn/o/1171254.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第二十四章 BEV感知系列一(车道线感知)

前言 近期参与到了手写AI的车道线检测的学习中去&#xff0c;以此系列笔记记录学习与思考的全过程。车道线检测系列会持续更新&#xff0c;力求完整精炼&#xff0c;引人启示。所需前期知识&#xff0c;可以结合手写AI进行系统的学习。 BEV感知系列是对论文Delving into the De…

一站式解决方案:体验亚马逊轻量服务器/VPS的顶级服务与灵活性

文章目录 一、什么是轻量级服务器/VPS 二、服务器创建步骤 三、服务器连接客户端(私钥登录) 四、使用服务器搭建博客网站 五、个人浅解及总结 一、什么是轻量级服务器/VPS 亚马逊推出的轻量级服务器/VPS&#xff1a;是一种基于云计算技术的虚拟服务器解决方案。它允许用户…

【MySQL事务篇】MySQL事务日志

MySQL事务日志 文章目录 MySQL事务日志1. 概述2. redo 日志2.1 概述2.2 redo log的好处、特点2.3 redo的组成2.4 redo的整体流程2.5 redo log的刷盘策略2.6 redo log file 参数设置相关 3. undo 日志3.1 概述3.2 Undo日志的作用3.3 undo的存储结构1. 回滚段与undo页2. 回滚段与…

洗地机哪个品牌好?家用洗地机选购攻略

随着家用洗地机的普及和市场的广泛认可&#xff0c;进入洗地机行业的制造商也越来越多。在面对众多洗地机品牌时&#xff0c;消费者常常感到困惑&#xff0c;不知道如何选择。面对众多选择&#xff0c;选择有良好保障的知名洗地机品牌是明智之举。知名品牌在质量、售后服务等方…

水离子壁炉的工作原理与优势

当我们想到都是传统的壁炉&#xff0c;但是现在有一种全新的壁炉—水离子雾化壁炉&#xff0c;它以杀菌、环保和净化空气的特点受到人们的热烈欢迎。 水离子壁炉听上去可能有点高科技&#xff0c;但其实它的工作原理相当简单。这种壁炉利用了水的独特性质。壁炉内有一个系统&a…

ipswitch如何用Public key 連接sftp

Options--SSH--Client Keys---import 先選擇Putty Key Generator save出來的public key(.pub)文件&#xff08;Putty Key Generator 保存時可能沒加.pub後綴保存&#xff0c;可自行對public key加上後綴.pub&#xff09; 先選擇Putty Key Generator save出來的private key(.…

GAMP源码阅读:PPP中的模型改正:天线相位中心、天线相位缠绕、潮汐、地球自转效应、引力延迟

原始 Markdown文档、Visio流程图、XMind思维导图见&#xff1a;https://github.com/LiZhengXiao99/Navigation-Learning 文章目录 一、卫星天线相位中心改正1、原理2、文件读取3、setpcv()&#xff1a;设置天线参数4、satantoff()&#xff1a;卫星 PCO 改正5、satantpcv()&…

以太网实验1.mdio接口读写实验

以太网常见硬件组成&#xff1a; fpga首先发送数据到经过udp层、ip层以及mac层的封装 主要有MAC控制器、PHY芯片、网络变压器和RJ45接头组成&#xff0c;有的系统会有DMA控制。一般的系统中CPU和MAC以及DMA控制器都是集成在一块芯片上的&#xff0c;为了节省空间简化设计&…

物联网AI MicroPython传感器学习 之 SSD1306 OLED显示屏幕

学物联网&#xff0c;来万物简单IoT物联网&#xff01;&#xff01; 一、产品简介 OLED&#xff0c;即有机发光二极管&#xff08;Organic Light-Emitting Diode&#xff09;&#xff0c;又称为有机电激光显示&#xff08;Organic Electroluminesence Display&#xff0c; OEL…

管理文件:文件批量重命名,轻松删除文件名中的空格

在文件管理中&#xff0c;我们经常会遇到文件名中带有空格的情况。这些空格可能会使文件在某些情况下难以被正确识别或使用&#xff0c;因此我们需要掌握一些技巧来轻松删除文件名中的空格。现在使用云炫文件管理器批量重命名进行批量处理。以下是如何操作的步骤详解&#xff1…

Unity中Shader的GI的直接光实现

文章目录 前言一、在上一篇文章中&#xff0c;得到GI相关数据后&#xff0c;需要对其进行Lambert光照模型计算二、在准备好上面步骤后&#xff0c;我们需要准备缺少的数据1、准备上图中的 s.Normal2、准备上图中的 s.Albedo 前言 Unity中Shader的GI的直接光实现&#xff0c;基…

Python基础入门例程30-NP30 用列表实现队列(列表)

最近的博文&#xff1a; Python基础入门例程29-NP29 用列表实现栈&#xff08;列表&#xff09;-CSDN博客 Python基础入门例程28-NP28 密码游戏&#xff08;列表&#xff09;-CSDN博客 Python基础入门例程27-NP27 朋友们的喜好&#xff08;列表&#xff09;-CSDN博客 目录 …

缺陷之灵魂操作bug

一、前言 正常来说&#xff0c;我们在测试缺陷的时候都是按照case来测试的&#xff0c;但是有些场景&#xff0c;例如说发散思维这种场景&#xff0c;就会找到一些比较不太正常、不好复现的缺陷&#xff0c;然后如果要辅助研发修复&#xff0c;就会极为痛苦。 二、场景描述 大…

免费获得临时域名/内网穿透

文章目录 Coplar 介绍Coplar 使用场景Coplar 使用 Coplar 介绍 》官网地址《 官网介绍&#xff1a; cpolar极点云: 公开一个本地Web站点至公网 只需一行命令&#xff0c;就可以将内网站点发布至公网&#xff0c;方便给客户演示。高效调试微信公众号、小程序、对接支付宝网关…

163M水经微图从入门到精通文档教程

我们在《47GB从入门到精通微图视频教程》一文中&#xff0c;为大家分享了视频教程。 由于有一些比较偏理论的内容不便于录制视频&#xff0c;因此文档教程才会更加完整全面。 CHM文档教程 我们将水经微图的文档教程制作成了CHM文件&#xff0c;共有163M大小。 教程内容主要…

佳易王羽毛球馆计时计费管理系统软件下载,支持连接灯控

软件特色&#xff1a; 1、功能实用&#xff0c;操作简单&#xff0c;不会电脑也会操作&#xff0c;软件免安装&#xff0c;已内置数据库。佳易王羽毛球馆计时计费系统软件免安装版V17.6&#xff0c;是集计时计费、商品销售、会员管理、备注记事本、定时提醒功能于一体的管理软…

Keras人工智能神经网络 Regressor 回归 神经网络搭建

前期分享了使用tensorflow来进行神经网络的回归&#xff0c;tensorflow构建神经网络 本期我们来使用Keras来搭建一个简单的神经网络 Keras神经网络可以用来模拟回归问题 (regression)&#xff0c;例如给下面一组数据&#xff0c;用一条线来对数据进行拟合&#xff0c;并可以预…

GPT学习笔记

百度的文心一言 阿里的通义千问 通过GPT能力&#xff0c;提升用户体验和产品力 GPT的出现是AI的iPhone时刻。2007年1月9日&#xff0c;第一代iPhone发布&#xff0c;开启移动互联网时代。新一轮的产业革命。 GPT模型发展时间线&#xff1a; Copilot - 副驾驶 应用&#xf…

Angular-07:组件生命周期

三个阶段&#xff1a; ① 挂载阶段1.1 constructor1.2 ngOnInit ② 更新阶段2.1 ngOnChanges2.2 ngAfterViewInit2.3 ngAfterContentInit2.4 ngDoCheck ③ 卸载阶段3.1 onOnDestroy ④ 在组件中添加所有方法并打印 该表按照执行顺序编写 编号函数名实现名说明1constructorcons…

基于单片机的智能感应监控系统的设计

收藏和点赞&#xff0c;您的关注是我创作的动力 文章目录 概要 一、系统分析2.1 整个控制系统的设计要求2.2 总体设计方案 二、系统硬件电路设计3.1 硬件电路介绍3.2 控制电路分析3.2.1 复位电路 三 软件设计原理图 四、 结论五、 文章目录 概要 因为人们在生活中对安全防范的…