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

putimage(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); 关闭音乐

  • 5
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值