什麼是 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 語言的老師,再或者您在教計算機圖形學,那麼這個庫必定會讓您興奮的。
點擊進入easyx官網c++
使用以前要#include <graphics.h> // 引用圖形庫頭文件 而後initgraph(640, 480); // 建立繪圖窗口,大小爲 640x480 像素(繪圖窗口不是控制檯,initgraph(640,480,SHOWCONSOLE)就能夠看到咱們熟悉的控制檯了)
過程:定義變量->加載->貼出 分別用到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(); }
首先須要定義一個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); } } }
使用這類函數能夠知道鼠標操做判斷時的座標,好比上方的按鈕座標就是用rectangle找的。或者實現鼠標放在按鈕變色、點擊效果等。
outtextxy、settextcolor、settextstyle,InputBox等等(不難,看完文檔介紹就懂) 可是outtextxy只能輸出char型,須要輸出int等類型時須要用到sprintf
int ybkcount=1; char tempnum[50]; sprintf(tempnum, "已選票數:%d", ybkcount); outtextxy(765, 405, tempnum);
* 一個函數每每有多個參數,能夠有默認參數,沒有特別什麼通常默認爲NULL。 * cleardevice能夠清屏,可是若是須要保留某部分時能夠用getimage * 加入sleep來控制貼圖速度 * 能夠經過繪圖覆蓋,而後輸出來實現更新
相信你們到這裏已經對easyx的使用有了必定的理解,可是可能有的同窗會說好像沒學到什麼,或者是就會這幾個函數有什麼用,我我的認爲教程不是手把手教學,而是啓蒙,而後同窗們觸類旁通,從原理上理解函數,學會本身去領悟函數,函數是教不完的,並且一個函數能夠有很是多的用法,不一樣的搭配方法也能夠實現不一樣的效果,這些都須要同窗們積極探索,easyx或許只是一個小的開始,但願同窗們可以在學習的過程當中不斷思考,不斷成長。
最後來個效果圖
編程