一、颜色

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的知识点相关推荐

  1. gnome桌面打造日常使用操作系统(支持Arch Linux、Fedora、Ubuntu)(2022.04.17更新)

    更新日志 日期 内容 2022.04.03 完成初稿 2022.04.05 更新sublime和imwheel 2022.04.06 添加所有软件在Feroda的安装方法 2022.04.07 添加所 ...

  2. Vue.js学习笔记 2022 04 17

    Vue.js学习笔记 1 Vue.js基础 Vue.js介绍 vuejs 渐进式 JavaScript 框架 Vue.js 如何应用 1 在普通html项目中,引入VUE.JS Hb 的项目 生成的 ...

  3. 2022.04.17-高宝琪毕设阶段性汇报

    第12次汇报 (2022.04.17) 实现了第三部分(分析数字化的心电数据)! 并将二.三两部分("纸质心电图数字化"和"分析数字化的心电数据")连通成了一个 ...

  4. 硬件大熊原创合集(2022/04更新)

    2022/04月份更新的篇章 智能门锁:NFC刷卡 智能门锁:触摸设计注意事项 面试题:高速电路是什么,什么信号算高速? 高速线路PCB设计:传输线效应 那些大咖们 刘未鹏是我在大学时知道的一位大牛, ...

  5. AI公开课:19.04.17杨松帆—好未来AI Lab负责人《为人工智能时代打造一个AI老师》课堂笔记以及个人感悟

    AI公开课:19.04.17杨松帆-好未来AI Lab负责人<为人工智能时代打造一个AI老师>课堂笔记以及个人感悟 导读 杨松帆,现为好未来教育集团人工智能实验室负责人.曾任FaceThi ...

  6. 将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 ...

  7. 2022年系统集成项目管理工程师考试知识点:区块链

    很多考生在备考2022年系统集成项目管理工程师考试,为大家整理了2022年系统集成项目管理工程师考试知识点:区块链,供大家备考复习. 区块链 区块链(Blockchain)是分布式数据存储.点对点传输 ...

  8. 微软发布 Visual Studio 2022 版本 17.3:支持.NET MAUI 正式版,提高 C++ 性能

    微软今天发布了 Visual Studio 2022 版本 17.3.此更新带来了对 .NET 多平台应用程序 UI (.NET MAUI) 支持.为 Microsoft Teams 开发应用程序的能 ...

  9. 2022.04.10-高宝琪毕设阶段性汇报

    第11次汇报 (2022.04.10) 经过了几天的努力, 终于跑通了最后的"分析数字化后的心电数据"这一部分; 采用了Flask框架将一个Keras深度学习模型部署到了Web端, ...

最新文章

  1. LeetCode简单题之删除一个元素使数组严格递增
  2. Linux grep不包含某些字符串的命令
  3. Mac下svn搭建和使用方法
  4. 【Linux】Docker 基础与实战,看这一篇就够了
  5. Java多线程(二)——多线程基本特性
  6. 一文总结熵,交叉熵与交叉熵损失
  7. Spring AOP无法拦截Controller中的方法
  8. vue怎么合并两个视频_vue怎么把照片合并视频
  9. 【Scratch案例教学】scratch手把手教小朋友制作飞机大战、空中格斗、星际争霸等超酷游戏
  10. web后端开发php,web后端开发主要做什么?
  11. 第六章代码的问题——基于DirectX11的3D图形程序设计案例教程——重庆大学出版社
  12. 利用Java计算圆柱体积
  13. Arno,第一个NFV开源平台
  14. 实例学习网页制作中常用的网页表单的应用
  15. B-Spline样条曲线及其性质
  16. PLSQL 与 PLPGSQL
  17. Linux主机Windows容器,了解用于Linux和 Windows容器的Docker“容器主机”与“容器操作系统”...
  18. ZYNQ7000固化流程
  19. android view.measure的用法,自定义View--View的measure过程
  20. 推荐几个清华和哈工大学霸的公众号,值得学习

热门文章

  1. C# Access数据库查询条件LIKE
  2. CSS元素居中的5种方法分享。
  3. 主流CRM系统比较II
  4. PTA题目 超速判断
  5. java根据模板动态生成word文档带表格
  6. iReport中纸张的大小 换算
  7. matlab纹理周期图,[转载]关于图像纹理合成的Matlab例程
  8. 吧友们, 昨天的「百度贴吧」还差一个用户界面, 代码都在这儿了...
  9. Shiro 未登录或登录失效,定义返回JSON格式数据
  10. 纪念一路的贫穷和富贵