C++圖形界面EasyX安裝及基本使用-創(chuàng)新互聯(lián)

本文章介紹C++用EasyX進(jìn)行C++基礎(chǔ)圖形編程介紹。

成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括高昌網(wǎng)站建設(shè)、高昌網(wǎng)站制作、高昌網(wǎng)頁制作以及高昌網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,高昌網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到高昌省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

EasyX安裝:

1、點(diǎn)擊上方超鏈接,進(jìn)入官網(wǎng),點(diǎn)擊右側(cè)下載EasyX

在這里插入圖片描述

2、點(diǎn)擊下載后的可執(zhí)行文件:

在這里插入圖片描述

3、EasyX安裝非常簡(jiǎn)單,進(jìn)入可執(zhí)行文件,直接next,然后會(huì)自動(dòng)檢測(cè)你的開發(fā)工具,針對(duì)對(duì)應(yīng)的開發(fā)工具直接點(diǎn)擊安裝即可。(文檔最好也下載,有時(shí)候會(huì)遇見一些小疑問,可以查看):

在這里插入圖片描述

4、安裝成功:

在這里插入圖片描述

安裝成功后,我們就可以開始進(jìn)行編程了(本人使用的是Visual Studio 2019)。


插件安裝后,我們不需要做任何工作,打開或新建一個(gè)項(xiàng)目都可以,編寫的過程只需要像平時(shí)引入頭文件一樣就可以進(jìn)行圖形編程。

下面介紹一些基礎(chǔ)的C++圖形編程知識(shí):

1、打開/新建一個(gè)項(xiàng)目后,引入頭文件easyx.h并建立一個(gè)圖形窗口:

#includeint main(){initgraph(1266, 730);//用該函數(shù)建立窗口//----------------------------------
    //initgraph(int width,int height)
    
    
    
    while(1);  //為了防止我們窗口建立后點(diǎn)擊一下會(huì)退出的情況發(fā)生,我們用該語句阻塞一下
    return 0;
}

運(yùn)行結(jié)果:

在這里插入圖片描述

是不是像控制臺(tái)一樣黑?我們的圖就是在這里顯示的。

2、圖形窗口坐標(biāo)基礎(chǔ)知識(shí):

話不多說,給個(gè)圖自己體會(huì)

在這里插入圖片描述
坐標(biāo)軸拓展(坐標(biāo)軸修改)【學(xué)習(xí)完文字輸出和顏色表示再回來學(xué)習(xí)這一小部分】:

一般我們使用坐標(biāo)軸的時(shí)候,并不習(xí)慣上圖這樣的表示的方式,我們一般是取Y軸向上為正,要實(shí)現(xiàn)這個(gè)效果,我們需要調(diào)用兩個(gè)函數(shù):setaspectratio(int , int)和setorigin(int x,int y)

setaspectratio(int , int):修改縮放比例,但是當(dāng)我們的x或者y為-1的時(shí)候,會(huì)參數(shù)坐標(biāo)軸翻轉(zhuǎn)的效果。

setorigin(int x,int y):修改坐標(biāo)原點(diǎn)。因?yàn)槲覀兊淖鴺?biāo)原點(diǎn)默認(rèn)為左上角,我們可以修改為左下角或中央。

示例:輸出五個(gè)坐標(biāo)點(diǎn)

#includeclass coordination {char draw = '*';
public:
	int x = 0;
	int y = 0;

	void disp() {outtextxy(x, y, this->draw); }

	//構(gòu)造函數(shù)
	coordination() {};
	coordination(int x, int y) {this->x = x;
		this->y = y;
	}
	//構(gòu)析函數(shù)
	~coordination() {};
};
int main() {initgraph(600, 400);

	setbkcolor(RED);
	settextstyle(20, 0, "宋體");
	cleardevice();


	settextcolor(YELLOW);
	coordination c1 = coordination(100,300);
	coordination c2 = coordination(300,300);
	coordination c3 = coordination(400,300);
	coordination c4 = coordination(100,100);
	coordination c5 = coordination(130,200);

	c1.disp();
	c2.disp();
	c3.disp();
	c4.disp();
	c5.disp();

	while (1);
	return 0;
}

輸出結(jié)果:

在這里插入圖片描述

修改坐標(biāo)原點(diǎn)到左下角

#includeclass coordination {char draw = '*';
public:
	int x = 0;
	int y = 0;

	void disp() {outtextxy(x, y, this->draw); }

	//構(gòu)造函數(shù)
	coordination() {};
	coordination(int x, int y) {this->x = x;
		this->y = y;
	}
	//構(gòu)析函數(shù)
	~coordination() {};
};
int main() {initgraph(600, 400);
	setaspectratio(1, -1);//Y 軸向上為正,設(shè)置后,我們還需要修改坐標(biāo)原點(diǎn)--------------------
	setorigin(0, 500);//修改坐標(biāo)原點(diǎn)---------------------------------------------------

	setbkcolor(RED);
	settextstyle(20, 0, "宋體");
	cleardevice();


	settextcolor(YELLOW);
	coordination c1 = coordination(100,300);
	coordination c2 = coordination(300,300);
	coordination c3 = coordination(400,300);
	coordination c4 = coordination(100,100);
	coordination c5 = coordination(130,200);

	c1.disp();
	c2.disp();
	c3.disp();
	c4.disp();
	c5.disp();

	while (1);
	return 0;
}

輸出結(jié)果:

在這里插入圖片描述

修改坐標(biāo)原點(diǎn)到中央:

#include#includeclass coordination {char draw = '*';
public:
	int x = 0;
	int y = 0;

	void disp() {outtextxy(x, y, this->draw); }

	//構(gòu)造函數(shù)
	coordination() {};
	coordination(int x, int y) {this->x = x;
		this->y = y;
	}
	//構(gòu)析函數(shù)
	~coordination() {};
};
int main() {initgraph(600, 400);
	setaspectratio(1, -1);//Y 軸向上為正,設(shè)置后,我們還需要修改坐標(biāo)原點(diǎn)--------------------
	setorigin(300, 200);//修改坐標(biāo)原點(diǎn)-------------------------------------------------

	setbkcolor(RED);
	settextstyle(20, 0, "宋體");
	cleardevice();


	settextcolor(YELLOW);
	coordination c1 = coordination(100,300);
	coordination c2 = coordination(300,300);
	coordination c3 = coordination(400,300);
	coordination c4 = coordination(100,100);
	coordination c5 = coordination(130,200);

	c1.disp();
	c2.disp();
	c3.disp();
	c4.disp();
	c5.disp();

	while (1);
	return 0;
}

輸出結(jié)果:

在這里插入圖片描述

3、一個(gè)黑黑的窗口,看著就不舒服,下面我們不妨先輸出幾個(gè)字試一下:

initgraph(600, 400);//窗口太大,有點(diǎn)不方便,來個(gè)小窗


outtextxy(200, 200,L"開啟我的圖形編程之路!");//----------------------------------
//注意,在vs2019中,若想將你的字符串正確輸出,請(qǐng)?jiān)谧址那懊婕由弦粋€(gè)‘L’


while (1);
return 0;

運(yùn)行結(jié)果:

在這里插入圖片描述

我們輸出的時(shí)候是使用一個(gè)固定的字符串進(jìn)行輸出的,很多時(shí)候,我們可能想要用一個(gè)變量去輸出,但是有小伙伴發(fā)現(xiàn),我們建立了一個(gè)字符串變量,輸出的時(shí)候會(huì)出現(xiàn)不兼容

std::string s1="開啟我的圖形編程之路!";
outtextxy(200, 200, s1);
//正常情況下,你的代碼在這里會(huì)出錯(cuò),實(shí)際上這是字符集不兼容的原因。

該問題的解決方案,在EasyX文檔里面提供的解決方案:

在這里插入圖片描述

為了問題便于解決,我們直接考慮使用自適應(yīng)字符集,然后直接模仿代碼:

#includeint main() {	initgraph(600, 400);

	TCHAR s[] = _T("Hello World!");//-----------------------
	outtextxy(200, 200, s);//-------------------------------

	while (1);
	return 0;
}

運(yùn)行結(jié)果:

在這里插入圖片描述

4、我們的字符輸出成功了,我們能不能修改輸出的字符的格式和顏色呢?在解決這個(gè)問題之前,我們有一個(gè)問題沒有回答,在EasyX中如何表示顏色?:

最簡(jiǎn)單直接的方式:直接用每種顏色對(duì)應(yīng)的英文字母大寫來表示:

GREEN綠色
BLUE藍(lán)色
YELLOW黃色

但是有的時(shí)候,我們想要使用組合色(由紅綠藍(lán)三基色可以組合任意一種顏色):

RGB( int , int ,int );
//參數(shù)中的三個(gè)int分別代表紅、綠、藍(lán)三基色的色度,其范圍均為0~255。

通過RGB(int, int, int)我們可以獲取任何我們想要得到的顏色。

4.1 在這里,我們?cè)龠M(jìn)行一步拓展:顏色在計(jì)算機(jī)中的表示方式:

我們知道,一個(gè)圖片在計(jì)算機(jī)中由一個(gè)個(gè)的像素點(diǎn)組成,每個(gè)像素點(diǎn)都有一個(gè)顏色,進(jìn)而組成一幅圖。在計(jì)算機(jī)中,一個(gè)像素點(diǎn)用4個(gè)字節(jié)(Byte)表示

00000000000000000000000000000000
ARGB

上面的ARGB代表黑色,其中:

A:透明通道;

R:三基色之紅色;

G:三基色之綠色;

B:三基色之藍(lán)色;

因?yàn)镽GB分別由8位二進(jìn)制數(shù)表示,因此在進(jìn)行色度調(diào)整的時(shí)候,我們只能選擇0~255

4.2 像素點(diǎn)的位運(yùn)算:

當(dāng)兩個(gè)像素點(diǎn)在同一坐標(biāo)時(shí),會(huì)發(fā)生什么情況?

在C++中,我們給出了兩種運(yùn)算:

  • 位于:SRCAND
  • 位或:SRCPAINT

例如,黑色跟白色進(jìn)行位于(我們只考慮三基色,不考慮透明度):

黑:000H

白:FFFH

結(jié)果:000H,位于結(jié)果為黑色。

黑色與白色進(jìn)行位或:

黑:000H

白:FFFH

結(jié)果:FFFH,位于結(jié)果為白色。

利用以上的運(yùn)算,我們可以讓圖片產(chǎn)生很多不同的效果,比如背景透明圖的實(shí)現(xiàn),模糊化,馬賽克等。

5、言歸正傳,下面我們了解如何輸出帶顏色的字:

settextcolor(color);
//參數(shù)為你想要展示的顏色

顯示為藍(lán)色字體:

initgraph(600, 400);

	settextcolor(BLUE);//將文字顏色調(diào)整為藍(lán)色---------------------------

	TCHAR s[] = _T("開啟我的圖形編程之路!");
	outtextxy(200, 200, s);

	while (1);
	return 0;

輸出結(jié)果:

在這里插入圖片描述

組合色:

initgraph(600, 400);

	settextcolor(RGB(150,20,150));//文字顏色組合色--------------------------

	TCHAR s[] = _T("開啟我的圖形編程之路!");
	outtextxy(200, 200, s);

	while (1);
	return 0;

輸出結(jié)果:

在這里插入圖片描述

6、字體格式的調(diào)整:

我們?cè)谑褂梦臋n編輯工具的時(shí)候,我們可以選擇調(diào)整字體的字號(hào)、字體樣式等,在C++中,我們使用settextstyle(int(字高),int(字寬),string(字體樣式));來實(shí)現(xiàn)。(注意,字體樣式使用字符串表示的時(shí)候,前面別忘了加’L’)

在這里簡(jiǎn)述一下什么是字高、字寬。實(shí)際上,我們編輯文本的時(shí)候,經(jīng)常使用字體的字號(hào)調(diào)節(jié),但是我們調(diào)節(jié)的時(shí)候只調(diào)節(jié)一個(gè)字號(hào)值,并不存在什么字高、字寬。實(shí)際上,我們調(diào)節(jié)的字號(hào)就是字高,而字寬的變化屬于自適應(yīng)變化,其跟隨字高進(jìn)行變化。在這里,將字寬值設(shè)置為0時(shí),其代表自適應(yīng)變化。

例如,將字號(hào)設(shè)置為50,字體為楷體:

initgraph(600, 400);

	settextcolor(RGB(150, 20, 150));

	settextstyle(50, 0, L"楷體");//字號(hào)設(shè)為50,字體為楷體---------------------


	TCHAR s[] = _T("開啟我的圖形編程之路!");
	outtextxy(50, 200, s);

	while (1);
	return 0;	

輸出結(jié)果:

在這里插入圖片描述

7、圖片的輸出:

圖片文件與之前我們學(xué)習(xí)文件io的操作要求完全一致,并且注意將你的圖片放到正確的文件夾中。

學(xué)習(xí)之前,我們看一個(gè)普通數(shù)據(jù)的輸入輸出:

int a;             //定義一個(gè)整型變量

scanf("%d",&a);    //從控制臺(tái)讀取一個(gè)10進(jìn)制的數(shù)據(jù)保存在a中

printf("%d",a);    //將a輸出在控制臺(tái)。

圖片的顯示也與此類似:

IMAGE p;                 //定義一個(gè)IMAGE類型變量

loadimage(&p,"圖片名");   //從文件中讀取一張圖片保存到p中

putimage(int x,int y,&p);//將p中的圖像輸出在界面上

例如:

我們選擇一個(gè)寬1000,高625的圖片:

在這里插入圖片描述

建立對(duì)應(yīng)窗口并載入輸出圖片:

initgraph(1000, 625);//---------------------------------

	IMAGE m;
	loadimage(&m, L"Pokemon.jpg");//注意后綴-----------------
	putimage(0, 0, &m);//-----------------------------------
	

	while (1);
	return 0;

輸出結(jié)果:

在這里插入圖片描述

8、音樂播放:

在我們建立的窗口也能進(jìn)行音樂播放(音樂播放器設(shè)計(jì)的基礎(chǔ))

(重點(diǎn))在C++中的EasyX并沒有播放音樂的對(duì)應(yīng)文件,它是windows系統(tǒng)的東西,因此只有一個(gè)easyx頭文件根本不夠用>。我們可以按照以下步驟:

  1. 包含頭文件mmsystem.h mm:Multi-Media多媒體

  2. 包含一個(gè)庫文件 winmm.lib win:windows mm同上

    庫文件包含方式:

    #pragma comment (lib,“winmm.lib”) //c-預(yù)處理語句

  3. 調(diào)用函數(shù):mciSendString(string file_name) //這里的file_name同文件io(注意后綴)

我們?cè)卺槍?duì)mciSendString(string file_name)進(jìn)行用法介紹:

代碼解釋
mciSendString(“open 夜曲.mp3”,0,0,0);打開音樂文件
mciSendString(“play 夜曲.mp3”,0,0,0);播放音樂文件
mciSendString(“pause 夜曲.mp3”,0,0,0);暫停音樂播放
mciSendString(“close 夜曲.mp3”,0,0,0);關(guān)閉音樂文件

其中:

mic: modia control interface:媒體控制接口

send string: 發(fā)送字符串

后面的三個(gè)0暫時(shí)先不管,因?yàn)樗婕暗臇|西比較多(比如聲道),新手先不用管太多,我們簡(jiǎn)單模擬一下就行,后面有時(shí)間再深入。

注意:

1、網(wǎng)易云的音樂播放不了。(文件內(nèi)部做了調(diào)整,windows系統(tǒng)內(nèi)部無法識(shí)別)QQ音樂可以

2、音樂名稱中間不能有空格,因?yàn)槟愕囊恍┎僮餍枰每崭駚砀糸_(比如open和文件名中間留一個(gè)空格)

3、請(qǐng)?zhí)崆鞍盐募卣姑瓷?,不要自己改后綴

例如:

#include#include//-------------------------------------一定別忘了引入
#pragma  comment  (lib,"winmm.lib")//----------------------一定別忘了引入
int main() {	initgraph(1000, 625);


	mciSendString(L"open 1.mp3", 0, 0, 0);    //打開---------------------

	mciSendString(L"play 1.mp3", 0, 0, 0);    //播放---------------------

	while (1);
	return 0;
}

當(dāng)窗口生成后,會(huì)自動(dòng)播放音樂。

9、背景色修改:setbkcolor()+cleardevice();

setbkcolor:設(shè)置背景色

cleardevice:用當(dāng)前背景色刷新窗口。

注意:僅僅使用setbkcolor()后,我們并不能直接改變窗口背景的顏色,必須后面來一次cleardevice來刷新一下。

示例:

initgraph(1000, 625);
	setbkcolor(WHITE);//--------------------------------背景白色
	cleardevice();//------------------------------------刷新背景色


	settextcolor(RED);

	settextstyle(30, 0, "宋體");

	outtextxy(400, 260, "Hello World!");

	while (1);
	return 0;

輸出結(jié)果:

在這里插入圖片描述
后記:

為打好圖形編程的基礎(chǔ),正所謂磨刀不誤砍材工,我們先把EasyX文檔上面涉及的基本操作多多運(yùn)用,熟練掌握,等使用熟練了以后,再去掌握畫圖的進(jìn)階內(nèi)容(比如動(dòng)畫、按鈕、鼠標(biāo)點(diǎn)擊事件等,實(shí)際上,掌握了上面的基礎(chǔ)內(nèi)容結(jié)合文件IO,就做一些簡(jiǎn)單的數(shù)據(jù)可視化)。EasyX文檔中涉及的基礎(chǔ)知識(shí),每有心得即可再該文檔中進(jìn)行補(bǔ)充。而進(jìn)階內(nèi)容補(bǔ)充到另一個(gè)文檔中。




(文章作學(xué)習(xí)筆記使用,本人水平有限,若有紕漏,歡迎指正)

參考博文:

C/C++圖形庫EasyX快速上手指南【1】——繪圖窗口和基本圖形文字繪制(該文章中對(duì)字符串輸入部分的詳細(xì)解釋,內(nèi)容很好,可參考)

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

當(dāng)前文章:C++圖形界面EasyX安裝及基本使用-創(chuàng)新互聯(lián)
轉(zhuǎn)載來于:http://bm7419.com/article32/cesdpc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄云服務(wù)器、小程序開發(fā)外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站營銷、微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化