2022.04.17关于EasyX的知识点
一、颜色
1、EasyX颜色:rgb(红,绿,蓝)
三基色:红、绿、蓝 范围0~255
二、EasyX 坐标和设备
1、坐标:(注意看坐标的原点位置)
2、设备
设备分两种:a.默认的绘图窗口 b.image对象
通过SetWorkingImage()函数可设置当前用于绘图工具,设置后,所有绘图函数都在该设备上
三、窗口函数用于窗口的一些操作
initgraph( int width, int height, int flag = null); //用于初始化绘图窗口,创建窗口
closegraph(); //用于关闭绘制窗口
cleardevice(); //清空绘图设备
#include <stdio.h>int main(){ initgraph(640*480); //确定窗口大小getchar(); // 若没有,则会闪退closegraph();return 0;}
四、绘制函数
1、绘图函数,填充样式分为三种:无填充、有边框填充、无边框填充。
以画图为例划分:① circle(); //无填充
②fillcircle(); //有边框填充
③solidcircle(); //无边框填充
以形状划分:①circle( int x, int y,int radius) ;
椭圆ellipse;扇形pie;多边形polygon;矩形rectangle;圆角矩形roundrect;线line;画点putpixel
//--------------
int main(){initgraph(640,480); setlinestyle (ps_solid,5)setfillcolor(YELLOW);setlinecolor(BLUE);circle(50,50,50);fillcircle(50,150,50);solidcircle(50,250,50);getchar();closegraph();return 0;
}
-------------------- setbkcolor(颜色) ; //设置背景: stept1*
cleardevice(); //清屏: stept2*
--------------------setfillcolor(颜色); //设置填充颜色
--------------------setlinecolor(颜色); //设置线条颜色
--------------------setlinestyle(样式,像素); //设置线条样式
五、文字绘制函数,用在窗口上绘制文字
①在指定位置上输出字符串: outtextxy( int x, int y, L"字符串内容");
②设置当前文字颜色: settextcolor (COLOR 颜色);
③设置字体样式:settextstyle( int nheight, int nweight, LPCTSTR IpszFace) // 高度,宽度,字名
initgraph(640,480,show console) //1.show console 创建窗口时,保留控制台显示//2.noclose 没有关闭功能//3.nominimize 没有最小化
int maye=0;
scanf("%d, &maye);//绘制文字
settextcolor(red); //默认为白色
outtextxy (20,20,'a'); (x坐标。y坐标,绘制文字内容)outtextxy (20,20, L'我是帅哥'); // 在字符串前加大写的“L”// 用text()把字符串内容包裹起来 // 项目-属性-配置属性-常规-字符集-改为多字节字符//设置文字样式
settextstyle(50,0,“楷体”);
//设置背景模式
setbkmod(TRANSPARENT); //透明背景
outtextxy(50,50,L“我是帅哥”);
④textheight(LPCTSTR str); //获字符串实际占用像素高度
textwidth(LPCTSTR str); //获字符串实际占用像素宽度
//以上可用于文本的垂直和水平居中显示,就是需要手动计算,麻烦
//把文字居中
fillrectangle( 左上坐标x,左上坐标y,右下坐标x,右下坐标y)
settextcolor(reg(173,0,3)); //需重新定制字颜色
char[]="我是居中显示的mage";
int width =300/2-textwidth (arr)/2 ;
int width =50/2-textheight (arr)/2 ;
outtextxy (width+200 , height+50 , arr); //动态居中
六、图像处理函数
※图像处理函数用在窗口上显示图片
Step 1:在使用图像前,需要定义一个变量(对象),然后吧图片加载进变量才能进行使用;
①平时定义变量都是使用的基础数据类型: int temp;
②在使用图像的时候需要使用EasyX提供类型:image;
Step 2:
loadimage(IMAGE *pDstimg ,LPCTSTR plmgFile, int nWidth=0, int nHeight=0,
bool bResize=false);
*pDstimg:保存图像的IMAGE对象指针&img
plmgFile:图片文件名
nWidth:拉伸宽度
nHeight:拉伸高度
bResize=false:是否调整IMAGE的大小以适应图片
Step 3:
putimage (int dstX, int dstY, IMAGE *pSrclmg, DWORD dwRop=SRCCOPY); //在当前设备上绘制指定图像
dstX:绘制位置x坐标
dstY:绘制位置y坐标
*pSrclmg:要绘制的IMAGE对象指针&img
dwRop=SRCCOPY :三元光栅操作码
//输出图片
IMAGE image; //定义一个对象(变量)
//加载图片
loadimage(&img,“./”,250,250); //格式:loadimage(&img,“./”,大小,调整)'./’表示当前文件夹下‘../’表示当前文件夹上一级目录相对路径:./00.jpg绝对路径:D:\UserData\Pictures\00.jpgputimage(0,0,&img);
七、鼠标消息函数
1、鼠标消息要使用MOUSEMSG类型,例:MOUSEMSG msg;
2、然后MoustHit() 判断是否有鼠标消息 (左键or右键or中间or移动)
3、如果有鼠标消息就可进行接收鼠标消息 msg=GetMouseMsg();
4、鼠标、消息主要成员:
uMsg:当前鼠标消息;
x:当前鼠标x坐标
y: 当前鼠标y坐标
while(1)
{if(MouseHit()){MOUSE msg =GetMouseMsg();//消息发送switch(msg,uMsg){case WM_LBUTTONDOWN;outtextxy(400,400,"左键按下")printf("坐标(%d,%d)\n", msg.x,msg.y);break;case WM_RBUTTONDOWN;outtextxy(400,400,"右键按下")printf("坐标(%d,%d)\n", msg.x,msg.y);break;}}
}
八、非EasyX函数——键盘消息函数
两种键盘操作方式
1、用于获取鼠标消息的函数有两个
①getch(); //需要头文件conio.h
②GetAsyncKeyState(键值); //需要头文件windows.h
2、方法One:
getch();需要使用返回值来判断
①与非ASCII表字符的按键比较,需虚拟键值(上72,下80,左75,右77)
②如果是与字母比较就直接写字母 比如:‘A’;
3、方法Two: ※推荐 可走斜
GetAsyncKeyState(键值);
需要传入一个键值, 如:按下返回真: (上 VK_UP;下 VK_DOWN; 左 VK_LEFT;右 VK_RIGHT;)
九、EasyX图形库 ——其他函数
1、在设备上不断进行绘图操作时,会产生闪屏现象,通常有两个函数去解决。
/* --双缓冲绘图,需要放在代码之前和之后-- */
Step 1:BeginBatchDraw(); //开始批量绘图
Step 2:-------------中间绘图代码 ----------------- 或FlushBatchDraw();
Step 3:EndBatchDraw(); //结束批量绘图
2、GetHWnd(); //获取窗口句柄,获取后用来操作窗口
①HWND hWnd = GetHWnd() ; //获取窗口句柄
②SetWlndowText(hWnd,“love”); //修改窗口标题
③MessageBox( hWnd,' 我是消息框' “我是标题”,MB_OKCANCEL); //设置模态对话框
ps: hWnd是变量, MB_OKCANCEL确认,关闭的按钮
例子:
void change(){HWND hnd =GetHWnd();SetWindowText(hnd ,"C语言plus");//弹出窗口用户提醒操作int isOK=MessangBox( null,"恭喜你成功中奖200W","标题",MB_OKCANCEL);//null:没有窗口句柄//hnd:有窗口句柄,需取消才能干别的,通俗理解就是这个窗口被置顶着需要点击取消才能点击别的窗口if(isok== IDOK)printf("点击了OK\n"); else if(IDCANCEL==isok)printf("你点击了取消\n")}
十、Windows API 播放音乐
1、为了实现用C语言播放音乐,需要用到windows 的一个API
①头文件windows.h (若已包含则无需geaphics.h)
②然后需加载静态库 winmm.lib
③最后就可以使用 mciSendString函数来播放音乐
MCIERROR mmciSendStringA(
LPCSTR IpstrCommand, //命令字符串,命令设备[参数]
LPSTR IpstrReturnString, //接收返回信息缓冲区,为null时不返回信息
UINT uReturnLength, // 上述缓冲区大小
HWND hwndCallback, //一般为null
);
使用方法:
Step1: mciSendString("open ./ 路径.mp3" null,null,null); 打开音乐
Step2:mciSendString("play ./ 路径.mp3 "null,null,null); 播放音乐
mciSendString("close./ 路径.mp3 "null,null,null); 关闭音乐
2022.04.17关于EasyX的知识点相关推荐
- gnome桌面打造日常使用操作系统(支持Arch Linux、Fedora、Ubuntu)(2022.04.17更新)
更新日志 日期 内容 2022.04.03 完成初稿 2022.04.05 更新sublime和imwheel 2022.04.06 添加所有软件在Feroda的安装方法 2022.04.07 添加所 ...
- Vue.js学习笔记 2022 04 17
Vue.js学习笔记 1 Vue.js基础 Vue.js介绍 vuejs 渐进式 JavaScript 框架 Vue.js 如何应用 1 在普通html项目中,引入VUE.JS Hb 的项目 生成的 ...
- 2022.04.17-高宝琪毕设阶段性汇报
第12次汇报 (2022.04.17) 实现了第三部分(分析数字化的心电数据)! 并将二.三两部分("纸质心电图数字化"和"分析数字化的心电数据")连通成了一个 ...
- 硬件大熊原创合集(2022/04更新)
2022/04月份更新的篇章 智能门锁:NFC刷卡 智能门锁:触摸设计注意事项 面试题:高速电路是什么,什么信号算高速? 高速线路PCB设计:传输线效应 那些大咖们 刘未鹏是我在大学时知道的一位大牛, ...
- AI公开课:19.04.17杨松帆—好未来AI Lab负责人《为人工智能时代打造一个AI老师》课堂笔记以及个人感悟
AI公开课:19.04.17杨松帆-好未来AI Lab负责人<为人工智能时代打造一个AI老师>课堂笔记以及个人感悟 导读 杨松帆,现为好未来教育集团人工智能实验室负责人.曾任FaceThi ...
- 将Fri May 04 17:25:34 CST 2012形式的日期字符串转换成java.util.Date对象的方法
java.util.Date类的toString()方法默认生成"Fri May 04 17:25:34 CST 2012"形式的字符串,但从这样的字符串生成java.util.D ...
- 2022年系统集成项目管理工程师考试知识点:区块链
很多考生在备考2022年系统集成项目管理工程师考试,为大家整理了2022年系统集成项目管理工程师考试知识点:区块链,供大家备考复习. 区块链 区块链(Blockchain)是分布式数据存储.点对点传输 ...
- 微软发布 Visual Studio 2022 版本 17.3:支持.NET MAUI 正式版,提高 C++ 性能
微软今天发布了 Visual Studio 2022 版本 17.3.此更新带来了对 .NET 多平台应用程序 UI (.NET MAUI) 支持.为 Microsoft Teams 开发应用程序的能 ...
- 2022.04.10-高宝琪毕设阶段性汇报
第11次汇报 (2022.04.10) 经过了几天的努力, 终于跑通了最后的"分析数字化后的心电数据"这一部分; 采用了Flask框架将一个Keras深度学习模型部署到了Web端, ...
最新文章
- LeetCode简单题之删除一个元素使数组严格递增
- Linux grep不包含某些字符串的命令
- Mac下svn搭建和使用方法
- 【Linux】Docker 基础与实战,看这一篇就够了
- Java多线程(二)——多线程基本特性
- 一文总结熵,交叉熵与交叉熵损失
- Spring AOP无法拦截Controller中的方法
- vue怎么合并两个视频_vue怎么把照片合并视频
- 【Scratch案例教学】scratch手把手教小朋友制作飞机大战、空中格斗、星际争霸等超酷游戏
- web后端开发php,web后端开发主要做什么?
- 第六章代码的问题——基于DirectX11的3D图形程序设计案例教程——重庆大学出版社
- 利用Java计算圆柱体积
- Arno,第一个NFV开源平台
- 实例学习网页制作中常用的网页表单的应用
- B-Spline样条曲线及其性质
- PLSQL 与 PLPGSQL
- Linux主机Windows容器,了解用于Linux和 Windows容器的Docker“容器主机”与“容器操作系统”...
- ZYNQ7000固化流程
- android view.measure的用法,自定义View--View的measure过程
- 推荐几个清华和哈工大学霸的公众号,值得学习