快速入门EasyX图形编程
文章目錄
- 前言
- 一、EasyX是什么?
- 1、 EasyX原理:
- 2、EasyX安裝
- 二、EasyX必備小知識
- 1、 EasyX顏色
- 2、EasyX坐標和設備
- 三、 窗口函數
- 四、圖形繪制函數
- 五、文字繪制函數
- 六、圖像處理函數
- 七、鼠標消息函數
- 八、鍵盤消息函數
- 九、windowsAPI播放音樂
- 十、其他函數
前言
我們初學者寫代碼的時候,只有一些基礎語法和簡單算法的練習,并且與我們見的最多的就是黑色小框,
時間久了就會感到很是無趣,于是為了增加編程學習中的樂趣,我們可以學一點EasyX圖形編程,來為我們編程的學習之路,增加一些樂趣!學會了EasyX我們就可以開發一些簡單的有畫面的小游戲了;比如掃雷!😁😁😁
建議配套視頻:EasyX編程快速入門
一、EasyX是什么?
EasyX是針對C++的圖形庫,可以幫助C/C++初學者快速上手圖形和游戲編程。
比如我們可以基于EasyX圖形庫很快的用幾何圖形畫一個小房子或者一輛移動的小汽車,可以編寫俄羅斯方塊、掃雷、三子棋等小游戲。
我們大多數人學習編程都是從C語言開始的,而現狀是:
1、學校只教一些基礎語法,同學們只能在黑白窗口上練習,很是乏味。
2、即使有一些學校教授圖形編程,比如win32,OpenGL;但是門檻較高,容易從入門到入土。
于是就有了EasyX庫,來實現一些簡單的功能同時也比較容易上手;
1、 EasyX原理:
基于Windows圖形編程,將Windows 下的復雜程序過程進行封裝,Windows下的編程過程隱藏,給用戶提供一個簡單熟悉的接口。用戶對于圖形庫中函數的調用,最終都會由Windows的底層API(函數)實現。
2、EasyX安裝
EasyX圖形庫支持VS各種版本
由于我們的VS自帶的庫里安沒有EasyX圖形庫,所以需要我們去網上手動下一個EasyX庫,下好之后,它會自動導入VS對于的庫的文件里面;
安裝好過后我們包含以下#include<graphics.h>這個頭文件,就能快樂的使用了;
下載鏈接:https://easyx.cn/
直接下載最新版本就行了;
下載好過后它會提示你要不要下載幫助文檔,這個根據自己情況;
二、EasyX必備小知識
1、 EasyX顏色
■大家都學過初中物理,里面有一個知識點,光的三原色是紅、綠、藍。咱們表示顏色的使用就用三原色來表示。
■用RGB宏合成顏色,實際上合成出來的顏色是一個十六進制的整數。
RGB(紅色部分,綠色部分,藍色部分);
每個顏色部分的值都是從0~255)
畫圖板里面就有,RGB越往上走,顏色亮度越大;
2、EasyX坐標和設備
坐標默認的原點在窗口的左上角,X軸向右為正,Y軸向下為正,度量單位是像素點。
設備:簡單來說,就是繪圖表面
在EasyX中,設備分兩種,一種是默認的繪圖窗口另一種是IMAGE對象。通過SetWorkinglmage()函 數可以設置當前用于繪圖的設備。設置當前用于繪圖的設備后,所有的繪圖函數都會繪制在該設備上。
那些菜單之類(如上圖只有黑框是窗口,其它什么最小化,X都不是算是窗口的一部風)的東西不算在窗口之內;
三、 窗口函數
既然知道了這些基礎知識,那我們就來調用看看吧!
initgraph(int width,int height,int flag=NULL)//用于初始化繪圖窗口(創建窗口)
width:指定窗口寬度;
height:指定窗口高度;
flag:窗口樣式默認為NULL;
closegraph();//關閉繪圖窗口
cleardevice();//清空繪圖設備
既然介紹到這來了我們就來寫一個看看:
我們可以看到在C語言中我們是不能用這個庫的;
其實開頭就說了,EasyX是針對C++設計的圖形庫,當然對C語言沒用了;那么如何解決?
用C++來寫,不會C++怎么辦?沒關系,C++是全面兼容C的,我們在.cpp文件了面寫C語言是完全沒問題的;
問題的到了解決;
四、圖形繪制函數
既然有了窗口,我們就需要在窗口上畫個東西啊,怎么畫呢?當然是調用相關的繪圖函數來幫助我們;
比如我們想要畫個圓:
直接調用circle();//參數未寫
就行了;
在circle前面添上fill或者solid白哦是有邊框填充和無邊框填充;
當然如果你還想畫其它的圖形可以調其他相關的函數,需要有邊框填充或無邊框填充直接加上前綴fill或solid就行了,我們現在來畫一個看看;
我們畫個有邊框的矩形
如圖所示我們可以看見一個上頂點坐標為(250,50)下頂點坐標為(450,150)的矩形被畫了出來;其它函數的參數的具體意義請參考:https://docs.easyx.cn/zh-cn/intro
當然我們不能局限于這點,我們可以嘗試著給這個矩形設置填充一下其它顏色、設置換一下邊框樣式、設置一下線條顏色;
那我們就需要其他函數來幫助我們了:
setfillcolor(顏色);//設置填充顏色的;
setlinecolor(顏色);//設置線條顏色;
void setlinestyle(
int style,
int thickness = 1,
const DWORD *puserstyle = NULL,
DWORD userstylecount = 0
);;//設置線條樣式;
既然工具有了我們就來嘗試一下唄!
我們可以看到的確是這樣,我們強文說了顏色可以用英文單詞代替,也可以用RGB( ,,)來代替;
但是表示顏色的英文也就那么幾個;
我們有RGB在手不是隨便給,喜歡那個顏色就用那個顏色;
當然線條也不止這一種款式,還有其它類型:
現在我們覺得背景顏色不太好看,我們能不能也給他換掉?
當然可以
這就需要我們的setbkcolor(顏色)函數了和cleardevice()//無參
我們具體來看看;
是不是完成了;
五、文字繪制函數
既然圖形有了背景也有了,我們是不是可以在上面寫一點字了:
當然可以,我們可以用outtextxy(int x,int y,str);//在指定位置輸出字符串;
那我們能不能也想前面一樣設置樣式和顏色呢?
當然可以:settextcolor();設置當前文本顏色;
settextstyle(int height,int width,字體);//設置文本樣式
height:指定高度;width:字符的平均寬度,如果為0,則比例自適應;
textheight(LPCTSTR str)//獲取字符串實際占用的像素高度;
textwidth(LPCTSTR str)//獲取字符串實際占用的像素寬度;
以上兩種函數可以用于文本的垂直和居中顯示;
我們來試試唄:
我們發現會出現如此情況,如何解決?
找到項目->屬性->高級->字符集->使用多字節字符集;
解決問題后:
我們可以發現我們的文本遮住了黃色矩形,很是不好看,怎么消除?
利用setbkmode(int mode)//這個函數用于設置當前設備圖案填充和文字輸出時的背景模式。
mode//模式
文體解決了,我們能讓文本在黃色矩形里面居中顯示嗎?當然可以,首先我們的吧文本字號放小一點,不然裝不下;
原理圖:
我們將矩形的大小動態起來,以后我們曲輪怎么該變矩形的大小,我們的文本都會居中;
六、圖像處理函數
我們現在現在窗口上輸出一張圖片,能行嗎?當然可以不過我們的圖片必須和我們的源文件處于同一個目錄下,并且圖片格式最好是jpg格式;
首先我們得有一個變量:
IMAGE
既然有了存儲圖片的空間,我們就應該將圖片加載進去
》
既然加載進去了,就需要繪畫出來:
七、鼠標消息函數
展示代碼:
八、鍵盤消息函數
但是呢VS2019不讓我們使用getch()函數,我們使用_getch()函數也行,功能也是一樣;
代碼:
j接下來我們再來寫一個用鍵盤控制物體移動代碼:
效果展示:
這樣就移動起來了,同時我們還能利用上述所說的GetAsyncKeyState()來讀取鍵盤我們簡單改一下代碼就是:
GetAsyncKeyState(鍵位)如果鍵位按下了,就會返回1,否則返回0;
如果我們想讓背景圖不變的話,我們可以從頭開始循環:
九、windowsAPI播放音樂
首先呢我們的音樂也應該與源文件在同一個文件目錄下,同時還要加載靜態庫;同時還要包含一下#include<mmsystem.h>頭文件;
我們接下來來試試:
十、其他函數
如果我們將NULL換成句柄(p)的話,我們就必須把小窗口點了才能繼續后面的操作,否則點不動;
我們可以發現MessageBox是個宏函數,返回值為int
總結
以上是生活随笔為你收集整理的快速入门EasyX图形编程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2022.02.21_HTML+CSS学
- 下一篇: 微信公众号改名后阅读量涨了吗?