C/C++/EasyX——入门图形编程(4)

【说明】紧接上文(。・ω・。),好了,接下来,就让我们开始学习图像处理和获取鼠标消息的函数吧。(各位友友们不要着急,想在短时间内就想做小游戏或者写出各种好看的画面是不简单的,我们就把它当作一种兴趣一起来学习,慢慢掌握基础知识吧(^v^))

其实这篇文章讲的就是如何在窗口上显示图像以及如何获取鼠标消息,友友们要是想偷点懒,前一个知识点就直接看代码吧,这些文字说实话,有点用处但也不是说,不看就有什么很大影响一样。(^~^)ヽ(*≧ω≦)ノ

--------------------------------------------------------正文-------------------------------------------------------------------

目录

一:图像处理函数的介绍

一(1):图像处理函数

1. loadimage(1,2,3,4,5)—从文件中读取图像

2. ptimage(1,2,3,4)—在当前设备上绘制指定图像

一(2):图像处理函数应用实例

二:鼠标消息函数的介绍

二(1):鼠标消息函数应用实例

1.老版系统的鼠标操作

2.新版系统的鼠标操作     

三:说明


一:图像处理函数的介绍

图像处理函数用于在窗口上显示图片,在使用图像之前,需要定义一个变量(对象),然后把图片加载进变量才能使用。  平时定义变量,使用的都是基础的数据类型,比如 int、double……,在使用图像的时候,需要使用 EastX 提供给我们的数据类型:IMAGE,比如 IMAGE img。

一(1):图像处理函数

主要就是两个——loadimage(1,2,3,4,5),ptimage(1,2,3,4)。因为里面的参数不太容易看,这里就用数字来代替了。

1. loadimage(1,2,3,4,5)—从文件中读取图像

1保存图像的 IMAGE 对象指针
2图片的文件名
3图片的拉伸宽度(不写的话默认为0,即不拉伸)
4图片的拉伸高度(不写的话默认为0,即不拉伸)
5是否调整 IMAGE 的大小以适应图片

2. ptimage(1,2,3,4)—在当前设备上绘制指定图像

1绘制位置的 x 坐标
2绘制位置的 y 坐标
3要绘制的 IMAGE 对象指针
4三元光栅操作码(不用管)

一(2):图像处理函数应用实例

【代码如下】

#include <stdio.h>
#include <graphics.h>
int main()
{initgraph(400, 200);setbkcolor(WHITE);cleardevice();//输出图片IMAGE img;//定义一个(变量)对象//加载图片//相对路径: ./表示当前文件下, ../表示文件夹的上一级目录,一般用 ./loadimage(&img, "./yb.png",250,150);putimage(0, 0, &img);getchar();closegraph(); return 0;
}

【说明】这个图片是要放在你所建立的这个工程文件中的,还有它的名称要确保正确。打开文件,将你的图片保存在这个文件夹中即可,如图,还可以看到这个文件的项目类型,注意,写代码时图片的文件名是要包含项目类型的。

二:鼠标消息函数的介绍

鼠标消息函数用于获取鼠标的信息,鼠标信息需要使用 MOUSEMSG 类型,比如,MOUSEMSG msg。然后就用 MouseHit()判断是否有鼠标信息(左键、右键、中间、移动)

如果有鼠标消息,就可以进行接收鼠标信息了 msg=GetMouseMsg();

鼠标消息的主要成员:

uMsg——当前鼠标消息;x——当前鼠标 x 坐标;y——当前鼠标 y 坐标.。

其中 uMsg 可以用来判断当前鼠标消息是什么消息

主要的两个消息:WM_LBUTTONDOWN——鼠标左键消息

                             WM_RBUTTONDOWN——鼠标右键消息

二(1):鼠标消息函数应用实例

1.老版系统的鼠标操作

【代码如下】

#include <stdio.h>
#include <graphics.h>
int main()
{initgraph(400, 300);setbkcolor(WHITE);cleardevice();setfillcolor(YELLOW);setlinecolor(BLACK);fillrectangle(100, 50, 300, 150);settextcolor(RED);//鼠标消息while (1){if (MouseHit())//存在鼠标消息{MOUSEMSG msg = GetMouseMsg();//消息分发switch (msg.uMsg){
//鼠标按键时要在窗口内按键,才会显示是左键还是右键case WM_LBUTTONDOWN:outtextxy(250, 200, "鼠标左键按下");break;case WM_RBUTTONDOWN:outtextxy(250, 200, "鼠标右键按下");break;}}}getchar();closegraph(); return 0;
}

                                 

当然,也可以在上面代码上稍微做一下改动,改动的代码在24,25,28,31,32,34行上

#include <stdio.h>
#include <graphics.h>
int main()
{initgraph(400, 300);setbkcolor(WHITE);cleardevice();setfillcolor(YELLOW);setlinecolor(BLACK);fillrectangle(100, 50, 300, 150);settextcolor(RED);//鼠标消息while (1){if (MouseHit())//存在鼠标消息{MOUSEMSG msg = GetMouseMsg();//消息分发switch (msg.uMsg){case WM_LBUTTONDOWN:
//当在矩形内部点击鼠标按键时,打印出 Hello World!if (msg.x > 100 && msg.x < 300 && msg.y>50 && msg.y < 150)printf("Hello World!\n");outtextxy(250, 200, "鼠标左键按下");
//每次在窗口内点击鼠标时,都输出点击位置的坐标printf("坐标(%d,%d)\n", msg.x, msg.y);break;case WM_RBUTTONDOWN:if (msg.x > 100 && msg.x < 300 && msg.y>50 && msg.y < 150)printf("Hello World!\n");outtextxy(250, 200, "鼠标右键按下");printf("坐标(%d,%d)\n", msg.x, msg.y);break;}}}getchar();closegraph(); return 0;
}

             

2.新版系统的鼠标操作     

 和老版不同的是应用的函数不同,下面注释中有三处感叹号,是不同的地方。最后运行出的结果是一样的。

#include <stdio.h>
#include <easyx.h>
int main()
{initgraph(400, 300);setbkcolor(WHITE);cleardevice();setfillcolor(YELLOW);setlinecolor(BLACK);fillrectangle(100, 50, 300, 150);settextcolor(RED);//鼠标消息while (1){ExMessage msg;//!!if (peekmessage(&msg, WH_MOUSE))//!!
//有鼠标消息,返回真,否则,返回假{switch (msg.message)//!!{case WM_LBUTTONDOWN:if (msg.x > 100 && msg.x < 300 && msg.y>50 && msg.y < 150)printf("Hello World!\n");outtextxy(250, 200, "鼠标左键按下");//每次在窗口内点击鼠标时,都输出点击位置的坐标printf("坐标(%d,%d)\n", msg.x, msg.y);break;case WM_RBUTTONDOWN:if (msg.x > 100 && msg.x < 300 && msg.y>50 && msg.y < 150)printf("Hello World!\n");outtextxy(250, 200, "鼠标右键按下");printf("坐标(%d,%d)\n", msg.x, msg.y);break;default:break;}}}getchar();closegraph(); return 0;
}

三:说明

希望友友们这一篇学的顺利哦 (。・ω・。) ,大家平常在电脑上打游戏时需要鼠标操作的,那么下一篇就要讲一些鼠标操作函数了,希望我们一起学的开心,友友们动个小手点个赞,给我一点动力吧(^v^)。回见!(>y<)(⌒▽⌒)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1554904.html

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

相关文章

小白快速上手 Docker 03 | Docker数据卷

数据卷 在前面使用Docker时&#xff0c;可能会遇到以下几个问题&#xff1a; 当Docker 里的容器挂了以后打不开&#xff0c;这时候只有删除该容器了&#xff0c;但删除容器会连容器中的产生的数据也一起删除了&#xff0c;大部分场景下这是不能接受的。Docker容器与容器之间不…

【深度学习基础模型】深度残差网络(Deep Residual Networks, DRN)详细理解并附实现代码。

【深度学习基础模型】深度残差网络&#xff08;Deep Residual Networks, DRN&#xff09;详细理解并附实现代码。 【深度学习基础模型】深度残差网络&#xff08;Deep Residual Networks, DRN&#xff09;详细理解并附实现代码。 文章目录 【深度学习基础模型】深度残差网络&a…

使用前端三剑客实现一个备忘录

一&#xff0c;界面介绍 这个备忘录的界面效果如下&#xff1a; 可以实现任务的增删&#xff0c;并且在任务被勾选后会被放到已完成的下面。 示例&#xff1a; &#xff08;1&#xff09;&#xff0c;增加一个任务 &#xff08;2&#xff09;&#xff0c;勾选任务 &#xff…

Chat登录时出现SSO信息出错的解决方法

目录 1. 问题所示2. 问题所示3. 解决方法 1. 问题所示 此贴主要是总结回顾&#xff0c;对此放置在运维专栏 出现如下问题&#xff0c;很懵&#xff0c;以为是节点挂了还是网址蹦了 一直刷新&#xff0c;登录之后就出现这个问题 2. 问题所示 对于SSO&#xff0c;也就是单点登…

ExcelToWord-Excel套打Word-Word邮件合并工具分享

Excel to Word转换工具分享 在日常工作或学习中&#xff0c;我们常常需要将Excel中的数据导出到Word文档中&#xff0c;以便更好地展示信息。市场上有许多Excel to Word的转换工具&#xff0c;它们各有特色。今天&#xff0c;我们就来推荐几款这样的工具&#xff0c;并探讨一下…

基于Springboot+Vue的教师科研管理系统 (含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统中…

用Python实现运筹学——Day 12: 线性规划在物流优化中的应用

一、学习内容 线性规划在物流优化中可以用于解决诸如配送路径优化、货物运输调度等问题。配送中心的路径优化问题本质上是寻找一条最优路径&#xff0c;在满足需求点的需求条件下&#xff0c;最小化配送的总运输成本或时间。常见的物流优化问题包括&#xff1a; 配送中心的货…

Python小示例——质地不均匀的硬币概率统计

在概率论和统计学中&#xff0c;随机事件的行为可以通过大量实验来研究。在日常生活中&#xff0c;我们经常用硬币进行抽样&#xff0c;比如抛硬币来决定某个结果。然而&#xff0c;当我们处理的是“质地不均匀”的硬币时&#xff0c;事情就变得复杂了。质地不均匀的硬币意味着…

【C++】—— 类和对象(中)

【C】—— 类和对象(中) 文章目录 【C】—— 类和对象(中)前言1. 类的默认成员函数2. 构造函数3. 析构函数4. 拷贝构造函数5. 赋值运算符重载5.1 运算符重载5.2 赋值运算符重载 结语 前言 小伙伴们大家好呀&#xff0c;昨天的 【C】——类和对象(上) 大家理解的怎么样了 今天…

网约班车升级手机端退票

背景 作为老古董程序员&#xff0c;不&#xff0c;应该叫互联网人员&#xff0c;因为我现在做的所有的事情&#xff0c;都是处于爱好&#xff0c;更多的时间是在和各行各业的朋友聊市场&#xff0c;聊需求&#xff0c;聊怎么通过IT互联网 改变实体行业的现状&#xff0c;准确的…

卡码网KamaCoder 53. 寻宝

题目来源&#xff1a;53. 寻宝&#xff08;第七期模拟笔试&#xff09; C题解&#xff08;来源代码随想录&#xff09;&#xff1a;最小生成树 prim prim三部曲 第一步&#xff0c;选距离生成树最近节点第二步&#xff0c;最近节点加入生成树第三步&#xff0c;更新非生成树节…

随时随地,轻松翻译:英汉互译软件的便捷之旅

翻译英汉互译工具&#xff0c;就如同一位随时待命的语言助手&#xff0c;在这纷繁复杂的语言世界中为我们搭建起理解与沟通的桥梁。接下来&#xff0c;让我们一同深入了解这些神奇的英汉互译工具&#xff0c;探索它的诸多功能和独特魅力。 1.福晰在线翻译 链接直达>>h…

Python案例--三数排序

一、引言 在信息爆炸的时代&#xff0c;我们每天都会接触到大量的数据。无论是工作中的报表、学习中的数据集&#xff0c;还是日常生活中的购物清单&#xff0c;数据的有序性对于提高效率和决策质量都至关重要。排序算法作为数据处理的基础工具&#xff0c;其重要性不言而喻。…

RTSP协议讲解

1.RTSP协议 rtsp&#xff0c;英文全称 Real Time Streaming Protocol&#xff0c;RFC2326&#xff0c;实时流传输协议&#xff0c;是 TCP/IP 协议体系中的一个应用层协议。 RTSP 交互流程 1&#xff09;OPTIONS C--->S 客户端向服务器端发现 OPTIONS&#xff0c;请求可用…

netty之SpringBoot+Netty+Elasticsearch收集日志信息数据存储

前言 将大量的业务以及用户行为数据存储起来用于分析处理&#xff0c;但是由于数据量较大且需要具备可分析功能所以将数据存储到文件系统更为合理。尤其是一些互联网高并发级应用&#xff0c;往往数据库都采用分库分表设计&#xff0c;那么将这些分散的数据通过binlog汇总到一个…

Go基础学习11-测试工具gomock和monkey的使用

文章目录 基础回顾MockMock是什么安装gomockMock使用1. 创建user.go源文件2. 使用mockgen生成对应的Mock文件3. 使用mockgen命令生成后在对应包mock下可以查看生成的mock文件4. 编写测试代码5. 运行代码并查看输出 GomonkeyGomonkey优势安装使用对函数进行monkey对结构体中方法…

SQL专项练习第二天

在数据处理和分析中&#xff0c;Hive 是一个强大的工具。本文将通过五个 Hive 相关的问题展示其在不同场景下的应用技巧。 先在home文件夹下建一个hivedata文件夹&#xff0c;把我们所需的数据写成txt文件导入到/home/hivedata/文件夹下面。 一、找出连续活跃 3 天及以上的用户…

茄子病虫害数据集。四类:果肉腐烂、蛀虫、健康、黄斑病。4000张图片,已经按照8:2的比例划分好训练集、验证集 txt格式 含类别yaml文件 已经标注好

茄子病虫害数据集。可用于筛选茄子品质、质量&#xff0c;训练采摘机器人视觉算法模型……数据集大部分图片来源于真实果园拍摄的图片&#xff08;生长在果树之上的&#xff09;&#xff0c;图片分辨率高&#xff0c;数据集分为四类&#xff1a;果肉腐烂、蛀虫、健康、黄斑病。…

Pandas数据分析基础

目录标题 Pandas读取和写入数据数据读取读取csv读取excel数据输出 Pandas基础操作索引数据信息统计计算位置计算数据选择 Pandas高级操作复杂查询类型转换数据排序添加修改高级过滤数据迭代高阶函数 Pandas读取和写入数据 Pandas将数据加载到DataFrame后&#xff0c;就可以使用…

算法知识点————贪心

贪心&#xff1a;只考虑局部最优解&#xff0c;不考虑全部最优解。有时候得不到最优解。 DP&#xff1a;考虑全局最优解。DP的特点&#xff1a;无后效性&#xff08;正在求解的时候不关心前面的解是怎么求的&#xff09;&#xff1b; 二者都是在求最优解的&#xff0c;都有最优…