easyx的基础应用教程
生活随笔
收集整理的這篇文章主要介紹了
easyx的基础应用教程
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
引用
什么是 EasyX?
作者:EasyX
EasyX 是針對(duì) C++ 的圖形庫(kù),可以幫助 C 語(yǔ)言初學(xué)者快速上手圖形和游戲編程。 比如,可以用 VC + EasyX 很快的用幾何圖形畫一個(gè)房子,或者一輛移動(dòng)的小車,可以編寫俄羅斯方塊、貪吃蛇、黑白棋等小游戲可以練習(xí)圖形學(xué)的各種算法,等等。
許多學(xué)編程的都是從 C 語(yǔ)言開(kāi)始入門的,而目前的現(xiàn)狀是:
1. 有些學(xué)校以 Turbo C 為環(huán)境講 C 語(yǔ)言,只是 Turbo C 的環(huán)境實(shí)在太老了,復(fù)制粘貼都很不方便。
2. 有些學(xué)校直接拿 VC 來(lái)講 C 語(yǔ)言,因?yàn)?VC 的編輯和調(diào)試環(huán)境都很優(yōu)秀,并且 VC 有適合教學(xué)的免費(fèi)版本。可惜在 VC 下只能做一些文字性的練習(xí) 題,想畫條直線畫個(gè)圓都很難,還要注冊(cè)窗口類、建消息循環(huán)等等,初學(xué)者會(huì)受嚴(yán)重打擊的。初學(xué)編程想要繪圖就得用 TC,很是無(wú)奈。
3. 還有計(jì)算機(jī)圖形學(xué),這門課程的重點(diǎn)是繪圖算法,而不是 Windows 編程。所以,許多老師不得不用 TC 教學(xué),因?yàn)?Windows 繪圖太復(fù)雜了,會(huì)偏離教學(xué)的重點(diǎn)。新的圖形學(xué)的書有不少是用的 OpenGL,可是門檻依然很高。
所以,我們想給大家一個(gè)更好的學(xué)習(xí)平臺(tái),就是 VC 方便的開(kāi)發(fā)平臺(tái)和 TC 簡(jiǎn)單的繪圖功能,于是就有了這個(gè) EasyX 庫(kù)。如果您剛開(kāi)始學(xué) C 語(yǔ)言,或 者您是一位教 C 語(yǔ)言的老師,再或者您在教計(jì)算機(jī)圖形學(xué),那么這個(gè)庫(kù)一定會(huì)讓您興奮的。
1.配置easyx(vs2017+easyx)
1.點(diǎn)擊easyx官網(wǎng),進(jìn)入easyx網(wǎng)頁(yè)->點(diǎn)擊下載按鈕->下載安裝包(可選擇第二個(gè)下載,第一個(gè)一般為測(cè)試版)
點(diǎn)擊進(jìn)入easyx官網(wǎng)
2.安裝easyx會(huì)出現(xiàn)下圖頁(yè)面,點(diǎn)擊安裝文檔和Visual c++ 2017
3.打開(kāi)剛才安裝的文檔,就可以看到里面包括了easyx函數(shù)的介紹和使用方法。
2.函數(shù)使用
使用之前要#include <graphics.h> // 引用圖形庫(kù)頭文件
然后initgraph(640, 480); // 創(chuàng)建繪圖窗口,大小為 640x480 像素(繪圖窗口不是控制臺(tái),initgraph(640,480,SHOWCONSOLE)就可以看到我們熟悉的控制臺(tái)了)
2.1繪圖
過(guò)程:定義變量->加載->貼出
分別用到IMAGE、loadimage、putimage
往往和BeginBatchDraw、FlushBatchDraw、EndBatchDraw搭配使用可解決繪圖閃爍問(wèn)題,詳見(jiàn)文檔。
一段使用循環(huán)繪圖實(shí)現(xiàn)的動(dòng)畫效果代碼
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與鼠標(biāo)輸入相關(guān)函數(shù)的使用
首先需要定義一個(gè)MOUSEMSG變量,然后可以使用MouseHit函數(shù)判斷是否有鼠標(biāo)信息(一般使用嵌套while循環(huán)多次判斷),然后GetMouseMsg,再根據(jù)鼠標(biāo)信息執(zhí)行相應(yīng)操作。
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)))//鼠標(biāo)放在按鈕變色
{
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)))//鼠標(biāo)放在按鈕變色
{
setlinecolor(WHITE);
rectangle(751, 425, 929, 482);
}
}
}
2.3矩形、橢圓等函數(shù)的使用
使用這類函數(shù)可以知道鼠標(biāo)操作判斷時(shí)的坐標(biāo),比如上方的按鈕坐標(biāo)就是用rectangle找的。或者實(shí)現(xiàn)鼠標(biāo)放在按鈕變色、點(diǎn)擊效果等。
2.4輸出、輸入相關(guān)函數(shù)
outtextxy、settextcolor、settextstyle,InputBox等等(不難,看完文檔介紹就懂)
但是outtextxy只能輸出char型,需要輸出int等類型時(shí)需要用到sprintf
點(diǎn)擊進(jìn)入sprintf百科
int ybkcount=1;
char tempnum[50];
sprintf(tempnum, "已選票數(shù):%d", ybkcount);
outtextxy(765, 405, tempnum);
2.4小技巧
* 一個(gè)函數(shù)往往有多個(gè)參數(shù),可以有默認(rèn)參數(shù),沒(méi)有特別什么一般默認(rèn)為NULL。
* cleardevice可以清屏,但是如果需要保留某部分時(shí)可以用getimage
* 加入sleep來(lái)控制貼圖速度
* 可以通過(guò)繪圖覆蓋,然后輸出來(lái)實(shí)現(xiàn)更新
2.5尾聲
相信大家到這里已經(jīng)對(duì)easyx的使用有了一定的理解,但是可能有的同學(xué)會(huì)說(shuō)好像沒(méi)學(xué)到什么,或者是就會(huì)這幾個(gè)函數(shù)有什么用,我個(gè)人認(rèn)為教程不是手把手教學(xué),而是啟蒙,然后同學(xué)們舉一反三,從原理上理解函數(shù),學(xué)會(huì)自己去領(lǐng)悟函數(shù),函數(shù)是教不完的,而且一個(gè)函數(shù)可以有非常多的用法,不同的搭配方法也可以實(shí)現(xiàn)不同的效果,這些都需要同學(xué)們積極探索,easyx或許只是一個(gè)小的開(kāi)始,希望同學(xué)們能夠在學(xué)習(xí)的過(guò)程中不斷思考,不斷成長(zhǎng)。
最后來(lái)個(gè)效果圖
總結(jié)
以上是生活随笔為你收集整理的easyx的基础应用教程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 微信红包限额提升方法
- 下一篇: 金丝木通的功效与作用 金丝木通的副作用_