Easyx图形库基本用法

Easyx常见必备头文件:

#include<graphics.h>//必备

#include<conio.h>

#include<mmsystem.h>

#include<easyx.h>

#include<stdlib.h>

#include<string>

绘图方法:

initgraph(640, 480, EW_SHOWCONSOLE);//创建窗口

    closegraph();//关闭窗口,与创建窗口是一对必备的。通常放在最后

    setbkcolor(WHITE);//设置窗口背景颜色

    setbkcolor(RGB(红色部分,绿色部分,蓝色部分));//设置窗口背景颜色的另一种方法

    setlinecolor(WHITE);//设置线条颜色

    settextcolor(WHITE);//设置文字颜色

    setfillcolor(BLUE);//设置当前填充颜色

    cleardevice();//是用当前背景色清空屏幕,并将当前点移至 (0, 0),一般设置一种颜色之后就要这操作

    setbkmode(TRANSPARENT);//设置图案填充和文字输出时的背景模式.TRANSPARENT 背景是透明的。OPAQUE 不透明的,背景用当前背景色填充(默认)。

    setlinestyle();//设置线条格式。

    fillcircle(横坐标, 纵坐标, 半径);//填充圆(有边框)。使用当前线形和当前填充样式

    solidcircle((横坐标, 纵坐标, 半径);//这个函数用于画填充圆(无边框)。

    line(起始点的 x 坐标, 起始点的 y 坐标, 终止点的 x 坐标, 终止点的 y 坐标);//画线

    putpixel(点的 x 坐标, 点的 y 坐标, 点的颜色);//这个函数用于画点。

    BeginBatchDraw();//用于开始批量绘图。执行后,任何绘图操作都将暂时不输出到屏幕上

    FlushBatchDraw();//用于执行未完成的绘制任务

    EndBatchDraw();//用于结束批量绘制,并执行未完成的绘制任务。

    ExMessage msg;

    a = int getwidth();//返回 IMAGE 对象的宽度,以像素为单位。

    b = int getheight();//返回 IMAGE 对象的高度,以像素为单位。

    loadimage(保存图像的 IMAGE 对象指针, 图片文件名, 图片的拉伸宽度, 是否调整 IMAGE 的大小以适应图片);//这个函数用于从文件中读取图像。

    putimage(绘制位置的 x 坐标, 绘制位置的 y 坐标, 要绘制的 IMAGE 对象指针, 三元光栅操作码);//这个函数的几个重载用于在当前设备上绘制指定图像。

    clearrectangle(矩形左部 x 坐标, 矩形上部 y 坐标, 矩形右部 x 坐标, 矩形下部 y 坐标);//这个函数用于清空矩形区域

    outtextxy(输出时头字母的 x 轴的坐标值, 输出时头字母的 y 轴的坐标值, LPCTSTR str);//用于在指定位置输出字符串。

    getchar();//暂停窗口,不让其退出

    //设置背景模式,transparent透明

    setbkmode(TRANSPARENT);

    settextcolor(RGB(173, 0, 13));

    outtextxy(50, 50, "我是人才");

    //circle圆形 ellipse椭圆 pie扇形 polygon多边形 retangle矩形 roundrect圆角矩形 line线 putpixel点

    //把文字居中

    settextstyle(50,0,"楷体");//设置文字样式,大小,字体

    fillrectangle(200, 50, 500, 100);

    settextcolor(RGB(173, 0, 13));

    char arr[] = L"我是人才";

    int width = 300 / 2 - textwidth(arr) / 2;

    int height = 50 / 2 - textheight(arr) / 2;

    outtextxy(width + 200, height + 50, arr);

输出图片:

    IMAGE img;

    loadimage(&img, "文件途径");//相对路径

    putimage(0, 0, &img);

for (int y = 0; y <= 480; y += 10)

    {

        fillcircle(100, y, 25);

        Sleep(100);

        cleardevice();

    }//设好小球后,用这种方法可以让小球掉落

    for (int y = 0; y <= 480; y += 10)

    {

        setcolor(GREEN);

        setfillcolor(BLUE);

        fillcircle(100, y, 25);

        Sleep(100);//意思是将绘制出来的圆在显示100毫秒后,将其用背景色覆盖掉,这样就达到了清除了操作,不能用cleardevice

        setcolor(BLACK);

        setfillcolor(BLACK);

        fillcircle(100, y, 25);

    }

    setcolor(GREEN);//以下是使小球反弹的方法

    setfillcolor(BLUE);

    fillcircle(ball_x, ball_y, radius);

    Sleep(5);

    FlushBatchDraw();

    setcolor(BLACK);

    setfillcolor(BLACK);

    fillcircle(ball_x, ball_y, radius);

    ball_x += ball_vx;

    ball_y += ball_vy;

    if (ball_x <= radius || ball_x >= Width - radius)

        ball_vx = -ball_vx;

    if (ball_y <= radius || ball_y >= Height - radius)

        ball_vy = -ball_vy;

    mciSendString

void change()

    {

        HWND hnd = GetHWnd();//获取窗口句柄

        SetWindowText(hnd, "神奇窗口");//设置窗口标题

        //弹出窗口,提示用户操作

        int isok = MessageBox(hnd, "恭喜","提示",MB_OKCANCEL);

        if (isok = IDOK)

        {

            printf("点击 ok");

        }

        else if (IDCANCEL == isok) {

            printf("你点击了取消");

        }

    }

# pragma comment(lib, "winmm.lib")//传音乐文件必备

    void BGM()//传入音乐文件

    {

        mciSendString("open./hhh allas BGM", 0, 0, 0);

        mciSendString("play BGM repeat", 0, 0, 0);

        if (0)

        {

            mciSendString("close BGM", 0, 0, 0);

        }

    }

ExMessage msg;

    int x1 = 55; int y1 = 66;

    while (1)//第一种移动物体的方法

    {

        cleardevice();

        setfillcolor(RED);

        fillcircle(x1, y1, 20);

        FlushBatchDraw();

        /*/if (_kbhit())//有键盘就返回true

        {

            /*/char key = _getch();

            printf("%d %c\n", key, key);

            switch (key)

            {

            case'w':y1 -= 50;

                printf("上建\n");

                break;

            case's':y1 += 50;

                printf("下建\n");

                break;

            case'a':x1 -= 50;

                printf("左建\n");

                break;

            case'd':x1 += 50;

                printf("右建\n");

                break;

            }

    }

    //第二种移动物体的方法

    if (GetAsyncKeyState(VK_UP))//上建

    {

        y1 -= 50;

    }

    if (GetAsyncKeyState(VK_DOWN))//下建

    {

        y1 += 50;

    }

    if (GetAsyncKeyState(VK_LEFT))//左建

    {

        x1 -= 50;

    }

    if (GetAsyncKeyState(VK_RIGHT))//右建

    {

        x1 += 50;

    }

    //第二种方法的衍生版

    // int v = 1;//定义速度v

    setfillcolor(BLUE);//设置小球颜色

    fillcircle(x, y, 10);//设置小球大小位置

    FlushBatchDraw();//结束批量绘制

    if (GetAsyncKeyState(VK_UP))//上移

        y -= v;

    if (GetAsyncKeyState(VK_DOWN))//下移

        y += v;

    if (GetAsyncKeyState(VK_LEFT))//左移

        x -= v;

    if (GetAsyncKeyState(VK_RIGHT))//右移

        x += v;

    //点击按钮就打印坐标

    void button(int x, int y, int w, int h, const char* text)

    {

        setbkcolor(WHITE);

        cleardevice();

        setbkmode(TRANSPARENT);

        setfillcolor(BLUE);

        fillroundrect(x, y, x + w, y + h, 10, 10);

        settextstyle(30, 0, "黑体");

        char ch[50] = "button";

        int tx = x + (w - textwidth(text)) / 2;

        int ty = y + (h - textheight(text)) / 2;

        outtextxy(tx, ty, "text");

    }

    if (peekmessage(&msg, EM_MOUSE))

    {

        switch (msg.message)

        {

        case WM_LBUTTONDOWN:

            if (msg.x >= 50 && msg.x <= 200 && msg.y >= 50 && msg.y <= 100)

            {

                printf("我是按钮,我被点击了\n");

                printf("坐标(%d,%d)\n", msg.x, msg.y);

            }break;

        default:

            break;

        }

    }

}

实际前几天贪吃蛇游戏开始界面已成功案例:

initgraph(840, 800, EW_SHOWCONSOLE);

    setbkcolor(RED);

    cleardevice();

    //要在设置的字体前面加L

    settextstyle(15, 0, "楷体");//设置文字样式,大小,字体

    fillrectangle(200, 100, 600, 200);

    settextcolor(RGB(173, 0, 13));

    setbkmode(TRANSPARENT);

    char arr[] = "欢迎来到贪吃蛇游戏,按q开始游戏哦";

    int width = 400 / 2 - textwidth(arr) / 2;

    int height = 100 / 2 - textheight(arr) / 2;

    outtextxy(width + 200, height + 100, arr);

    settextstyle(15, 0, "楷体");//设置文字样式,大小,字体

    fillrectangle(200, 400, 600, 600);

    settextcolor(RGB(173, 0, 13));

    setbkmode(TRANSPARENT);

    char arr1[] = "方向盘移动,F1加速,F2减速";

    int width1 = 50 / 2 - textwidth(arr1) / 2;

    int height1 = 200 / 2 - textheight(arr1) / 2;

    outtextxy(width1 + 400, height1 + 400, arr1);

    //ExMessage msg;

    int x1 = 100; int y1 = 100;

    while (1)//第一种移动物体的方法

    {

        FlushBatchDraw();

        if (_kbhit())//有键盘就返回true

        {

            char key = _getch();

            switch (key)

            {

            case'w':y1 -= 50;

                printf("上建\n");

                break;

            case's':y1 += 50;

                printf("下建\n");

                break;

            case'a':x1 -= 50;

                printf("左建\n");

                break;

            case'd':x1 += 50;

                printf("右建\n");

                break;

            }

        }

    }

本贴为博主亲手整理。如有错误,请评论区指出,一起进步。谢谢大家的浏览。

  • 5
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值