easyx的基礎應用教程

引用

什麼是 EasyX?
                                                                                                做者:EasyX
EasyX 是針對 C++ 的圖形庫,能夠幫助 C 語言初學者快速上手圖形和遊戲編程。 好比,能夠用 VC + EasyX 很快的用幾何圖形畫一個房子,或者一輛移動的小車,能夠編寫俄羅斯方塊、貪吃蛇、黑白棋等小遊戲能夠練習圖形學的各類算法,等等。
許多學編程的都是從 C 語言開始入門的,而目前的現狀是:
1. 有些學校以 Turbo C 爲環境講 C 語言,只是 Turbo C 的環境實在太老了,複製粘貼都很不方便。
2. 有些學校直接拿 VC 來說 C 語言,由於 VC 的編輯和調試環境都很優秀,而且 VC 有適合教學的免費版本。惋惜在 VC 下只能作一些文字性的練習  題,想畫條直線畫個圓都很難,還要註冊窗口類、建消息循環等等,初學者會受嚴重打擊的。初學編程想要繪圖就得用 TC,非常無奈。
3. 還有計算機圖形學,這門課程的重點是繪圖算法,而不是 Windows 編程。因此,許多老師不得不用 TC 教學,由於 Windows 繪圖太複雜了,會偏離教學的重點。新的圖形學的書有很多是用的 OpenGL,但是門檻依然很高。
因此,咱們想給你們一個更好的學習平臺,就是 VC 方便的開發平臺和 TC 簡單的繪圖功能,因而就有了這個 EasyX 庫。若是您剛開始學 C 語言,或 者您是一位教 C 語言的老師,再或者您在教計算機圖形學,那麼這個庫必定會讓您興奮的。

1.配置easyx(vs2017+easyx)

1.點擊easyx官網,進入easyx網頁->點擊下載按鈕->下載安裝包(可選擇第二個下載,第一個通常爲測試版)

點擊進入easyx官網c++

2.安裝easyx會出現下圖頁面,點擊安裝文檔和Visual c++ 2017

3.打開剛纔安裝的文檔,就能夠看到裏面包括了easyx函數的介紹和使用方法。


2.函數使用

使用以前要#include <graphics.h>      // 引用圖形庫頭文件
而後initgraph(640, 480);   // 建立繪圖窗口,大小爲 640x480 像素(繪圖窗口不是控制檯,initgraph(640,480,SHOWCONSOLE)就能夠看到咱們熟悉的控制檯了)

2.1繪圖

過程:定義變量->加載->貼出
分別用到IMAGE、loadimage、putimage
每每和BeginBatchDraw、FlushBatchDraw、EndBatchDraw搭配使用可解決繪圖閃爍問題,詳見文檔。
  • 一段使用循環繪圖實現的動畫效果代碼
IMAGE  bk2, bk3;
    loadimage(&bk2, "image\\bk2.jpg", 1000, 700, true);//幕布
    loadimage(&bk3, "image\\bk3.jpg");//背景
    setbkmode(TRANSPARENT);
    for (int i = -700; i != 0; i++)//幕布
    {
        putimage(0, i, &bk2);
        Sleep(5);
    }
    for (int i = 0; i != -700; i--)
    {
        BeginBatchDraw();
        cleardevice();
        putimage(-60, 0, &bk3);
        putimage(0, i, &bk2);
        EndBatchDraw();
    }

2.2與鼠標輸入相關函數的使用

首先須要定義一個MOUSEMSG變量,而後可使用MouseHit函數判斷是否有鼠標信息(通常使用嵌套while循環屢次判斷),而後GetMouseMsg,再根據鼠標信息執行相應操做。
MOUSEMSG m;
    FlushMouseMsgBuffer();
    while (1)
    {
        while (MouseHit())
        {
            m = GetMouseMsg();
            if ((m.x >= 105 && m.x <= 282) && (m.y >= 423 && m.y <= 480))//管理員模式
            {
                setlinecolor(RED);
                rectangle(105, 423, 282, 480);
                if (m.uMsg == WM_LBUTTONDOWN)
                {
                    n = 1;
                    return ;
                }
            }
            if (!((m.x >= 105 && m.x <= 282) && (m.y >= 423 && m.y <= 480)))//鼠標放在按鈕變色
            {
                setlinecolor(WHITE);
                rectangle(105, 423, 282, 480);
            }
            if ((m.x >= 751 && m.x <= 929) && (m.y >= 425 && m.y <= 482))//用戶模式
            {
                setlinecolor(RED);
                rectangle(751, 425, 929, 482);
                if (m.uMsg == WM_LBUTTONDOWN)
                {
                    n = 2;
                    return ;
                }
            }
            if (!((m.x >= 751 && m.x <= 929) && (m.y >= 425 && m.y <= 482)))//鼠標放在按鈕變色
            {
                setlinecolor(WHITE);
                rectangle(751, 425, 929, 482);
            }

        }
        
    }

2.3矩形、橢圓等函數的使用

使用這類函數能夠知道鼠標操做判斷時的座標,好比上方的按鈕座標就是用rectangle找的。或者實現鼠標放在按鈕變色、點擊效果等。

2.4輸出、輸入相關函數

outtextxy、settextcolor、settextstyle,InputBox等等(不難,看完文檔介紹就懂)
可是outtextxy只能輸出char型,須要輸出int等類型時須要用到sprintf

點擊進入sprintf百科算法

int ybkcount=1;
    char tempnum[50];
    sprintf(tempnum, "已選票數:%d", ybkcount);
    outtextxy(765, 405, tempnum);

2.4小技巧

* 一個函數每每有多個參數,能夠有默認參數,沒有特別什麼通常默認爲NULL。
* cleardevice能夠清屏,可是若是須要保留某部分時能夠用getimage
* 加入sleep來控制貼圖速度
* 能夠經過繪圖覆蓋,而後輸出來實現更新

2.5尾聲

相信你們到這裏已經對easyx的使用有了必定的理解,可是可能有的同窗會說好像沒學到什麼,或者是就會這幾個函數有什麼用,我我的認爲教程不是手把手教學,而是啓蒙,而後同窗們觸類旁通,從原理上理解函數,學會本身去領悟函數,函數是教不完的,並且一個函數能夠有很是多的用法,不一樣的搭配方法也能夠實現不一樣的效果,這些都須要同窗們積極探索,easyx或許只是一個小的開始,但願同窗們可以在學習的過程當中不斷思考,不斷成長。

最後來個效果圖
編程

相關文章
相關標籤/搜索