C/C++图形库EasyX保姆级使用教程(四) 图片的展示与缩放

微软技术分享 微软全球最有价值专家
全栈领域优质创作者
博客专家认证
2024-02-17 15:54:34

第一章 Microsoft Visual Studio 2022和EasyX的下载及安装使用 第二章 图形化窗口设置以及简单图形的绘制 第三章 图形颜色的填充及相关应用 第四章 图片的展示与缩放

文章目录

前言

想必大多数人学习图形库是想要将一些图片放到自己的程序中,而不是去画一些简单的图形,所以本篇文章将带领大家一起学习VC中图片的展示

一、图片的展示

1.变量存储图片

在加载图片时,我们需要先声明一个IMAGE变量去存储我们加载的图片。但是在这之前,我们要先绘制出来一个窗口。 示例:

#include<iostream>
#include<easyx.h>
#include<graphics.h>
using namespace std;
int main() {
    initgraph(1280, 730);/*创建一个窗口*/
    IMAGE img;/*声明一个IMAGE变量*/
    return 0;
}

2.加载图片

在加载图片时,我们使用loadimage()函数,loadimage(&变量名, "地址");,特别注意的是,地址我们可以写成固定的地址,也可以写成相对地址。这里为大家提供一下相对地址的写作方式。 另外展示的图片类型可以是png也可以是jpg,所以,并不需要过度去在意图片的类型。 还有一点最最最最最重要的是,在使用loadimage函数之前一定要按照如下图进行操作,否则可能会报错:

https://img-blog.csdnimg.cn/fd645efe66a74995abee8671484fbba1.png

使用方式如下:

#include<iostream>
#include<easyx.h>
#include<graphics.h>
using namespace std;
int main() {
    initgraph(1280, 730);/*创建一个窗口*/
    IMAGE img;/*声明一个IMAGE变量*/
    loadimage(&img, "./res/ys.png");/*变量地址,图片地址    相对地址“./”本目录下的文件进行访问   图片展示可以是png也可以是jpg*/
    while (true);
    return 0;
}

3.展示图片

在之前,我们既然已经加载了图片,那么我们就需要再进行图片的展示,这里,我们需要用到putimage();函数,这个函数的使用方式为:putimage(图片x,图片y,&变量) 注意:图片x和图片y是指的图片左上角的展示出来的坐标,而非是图片的中心或者是其他的位置,并且,在传递变量的时候一定要使用变量的地址,如果不使用的话,就会报错,具体的原因,如果有大佬知道的话,可以打在评论区,方便大家查看和理解!!! 详细代码如下:

#include<iostream>
#include<easyx.h>
#include<graphics.h>
using namespace std;
int main() {
    initgraph(1280, 730);/*创建一个窗口*/
    IMAGE img;/*声明一个IMAGE变量*/
    loadimage(&img, "./res/ys.png");/*变量地址,图片地址    相对地址“./”本目录下的文件进行访问   图片展示可以是png也可以是jpg*/
    putimage(0, 0, &img);/*展示图片*/
    while (true);
    return 0;
}

效果图如下:【变相为原神打了个广告】

https://img-blog.csdnimg.cn/5338064b438f43c4a20e32f5459bddf3.gif

https://img-blog.csdnimg.cn/096af2f167664ccc9f1196437a95400c.png

二、图片的缩放

在进行图片的缩放时,我们还是使用loadimage,只不过在这里,我们需要在函数的后边加上两个参数,分别为:右下角x、右下角y。另外需要注意的是,想要将图片全屏的话,还要看电脑的缩放比例以及屏幕的参数,如果屏幕分辨率为:1920×1080且缩放为125%时,我们实际的全屏参数为1536×864,那么我们就要在函数后边写上1536,864就行了,详细代码如下:

#include<iostream>
#include<easyx.h>
#include<graphics.h>
using namespace std;
int main() {
    initgraph(1536, 864);/*创建一个窗口*/
    IMAGE img;/*声明一个IMAGE变量*/
    loadimage(&img, "./res/ys.png", 1536, 864);/*变量地址,图片地址    相对地址“./”本目录下的文件进行访问   图片展示可以是png也可以是jpg 缩放大小*/
    putimage(0, 0, &img);/*展示图片*/
    while (true);
    return 0;
}

效果图如下:

https://img-blog.csdnimg.cn/b60af65d12d546dca6beece372c9cd31.png

总结

本篇文章主要讲解了VC中加载图片、展示图片以及图片的缩放。下一篇文章,我将会给大家讲解jpg以及png格式的图片去背景的相关操作。 以上就是本篇文章的全部内容了,最后,如果你觉的文章写的还不错的话,求点赞求收藏求打赏求转发,最重要的是点一个大大的关注,各位的支持是我创作的最大动力!


文章来源: https://blog.csdn.net/llh200804/article/details/131604045
版权声明: 本文为博主原创文章,遵循CC 4.0 BY-SA 知识共享协议,转载请附上原文出处链接和本声明。


...全文
2854 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

你是我的神!

汉字字库存储芯片扩展实验 # 汉字字库存储芯片扩展实验 ## 实验目的 1. 了解汉字字库的存储原理和结构 2. 掌握存储芯片扩展技术 3. 学习如何通过硬件扩展实现大容量汉字字库存储 ## 实验原理 ### 汉字字库存储基础 - 汉字通常采用点阵方式存储(如16×16、24×24、32×32点阵) - 每个汉字需要占用32字节(16×16)到128字节(32×32)不等的存储空间 - 国标GB2312-80包含6763个汉字,需要较大存储容量 ### 存储芯片扩展方法 1. **位扩展**:增加数据总线宽度 2. **字扩展**:增加存储单元数量 3. **混合扩展**:同时进行位扩展和字扩展 ## 实验设备 - 单片机开发板(如STC89C52) - 存储芯片(如27C256、29C040等) - 逻辑门电路芯片(如74HC138、74HC373等) - 示波器、万用表等测试设备 - 连接线若干 ## 实验步骤 ### 1. 单芯片汉字存储实验 1. 连接27C256 EPROM芯片到单片机系统 2. 将16×16点阵汉字字库写入芯片 3. 编写程序读取并显示汉字 ### 2. 存储芯片字扩展实验 1. 使用地址译码器(如74HC138)扩展多片27C256 2. 将完整GB2312字库分布到各芯片中 3. 编写程序实现跨芯片汉字读取 ### 3. 存储芯片位扩展实验 1. 连接两片27C256实现16位数据总线扩展 2. 优化字库存储结构,提高读取速度 3. 测试并比较扩展前后的性能差异 ## 实验代码示例(单片机部分) ```c #include #include // 定义存储芯片控制引脚 sbit CE = P2^7; // 片选 sbit OE = P2^6; // 输出使能 sbit

4,289

社区成员

发帖
与我相关
我的任务
社区描述
微软技术社区为中国的开发者们提供一个技术干货传播平台,传递微软全球的技术和产品最新动态,分享各大技术方向的学习资源,同时也涵盖针对不同行业和场景的实践案例,希望可以全方位地帮助你获取更多知识和技能。
windowsmicrosoft 企业社区
社区管理员
  • 微软技术分享
  • 郑子铭
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

微软技术社区为中国的开发者们提供一个技术干货传播平台,传递微软全球的技术和产品最新动态,分享各大技术方向的学习资源,同时也涵盖针对不同行业和场景的实践案例,希望可以全方位地帮助你获取更多知识和技能。

予力众生,成就不凡!微软致力于用技术改变世界,助力企业实现数字化转型。

试试用AI创作助手写篇文章吧