您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“C++音樂播放按鈕如何封裝”,內容詳細,步驟清晰,細節處理妥當,希望這篇“C++音樂播放按鈕如何封裝”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
1、準備工作:音樂、開發工具VS stdio及圖形庫工具
2、設計思路:先加載音樂,再通過點擊不同的按鈕執行不同的操作(播放音樂,暫停音樂、繼續播放、結束播放)
繪制按鈕我們通過一個按鈕button類來操作,這樣數據會存在一些必要的訪問數據權限,并可以將多個函數聲明寫在同一個類中,調用只需使用 " 類名.函數名 “即可調用里面的函數
按鈕類頭文件:-----button.h
#include "graphics.h" #include <iostream> #include <string> using namespace std; class Button { public: void Show(); void InitButton(int xx, int yy, int ww, int hh, COLORREF color, string text); bool InButton(ExMessage message); bool OnClickButton(ExMessage message); private: int x; int y; int w; int h; COLORREF curColor; COLORREF oldColor; string str; };
寫類中函數的定義(即寫函數的函數體) ----button.cpp
注意:在類外寫類內部函數的定義時,需要加類名限定
1、初始化按鈕的一些參數:如按鈕的長寬高、顏色和按鈕上的文字內容:
void Button::InitButton(int xx, int yy, int ww, int hh, COLORREF color, string text) { x = xx; y = yy; w = ww; h = hh; curColor = color; oldColor = color; str = text; }
2、繪制矩形按鈕:
void Button::Show() { //矩形框 setfillcolor(curColor); solidrectangle(x, y, x + w, y + h); //文字 settextstyle(15, 0, "FZZJ-XHFTJW.TTF"); //1、求文字所在矩形的寬高 int textw = textwidth(str.c_str()); int texth = textheight(str.c_str()); //2、求h2 w1 //(w - textw) / 2 <=> w1 //(h - texth) / 2 <=> h2 //3、求出文字所在矩形左上角的坐標 int xx = x+(w - textw) / 2; int yy = y+(h - texth) / 2; setbkmode(TRANSPARENT); settextcolor(BLACK); outtextxy(xx, yy, str.c_str()); }
注意:這里有一個文字在矩形框中居中顯示的:
如何將文字在矩形框中居中顯示?
如圖:要使文字在矩形中居中顯示: h2=h3 ; w1=w2
步驟:
1、求出文字的 高(textwidth(文字)) 與 寬(text(文字)) 返回的是一個整數
2、求出h2、w1的值
3、外矩形的寬高分別加上w1,h2就是需要繪制里面文字所在的矩形框的左上角的坐標。繪制一個矩形只需直到矩形左上角的坐標和矩形的寬高即可繪制繪制一個矩形。
4、判斷鼠標是否在按鈕中---在矩形中矩形顯示一種顏色,不在顯示另外一種顏色
bool Button::InButton(ExMessage message) { if (message.x >= x && message.x <= x + w && message.y >= y && message.y <= y + h) { curColor = RGB(236, 244, 255); return true; } curColor = oldColor; return false; }
5、判斷鼠標是否點擊矩形框
bool Button::OnClickButton(ExMessage m) { if (InButton(m) && m.message == WM_LBUTTONDOWN) { return true; } return false; }
主函數---main
加載音樂,繪制按鈕,按鈕消息的制作,顯示界面等
#include "button.h" #include <mmsystem.h> #pragma comment(lib,"winmm.lib") int main() { initgraph(800, 600); IMAGE mm; loadimage(&mm, "mm.jpg",800,600); Button* play = new Button; play->InitButton(5, 5, 100, 25, RGB(204, 213, 240), "播放(play)"); Button* pause = new Button; pause->InitButton(110, 5, 100, 25, RGB(204, 213, 240), "暫停(pause)"); Button* resume = new Button; resume->InitButton(215, 5, 100, 25, RGB(204, 213, 240), "繼續(resume)"); Button* stop = new Button; stop->InitButton(320, 5, 100, 25, RGB(204, 213, 240), "停止(stop)"); ExMessage m; BeginBatchDraw(); while (1) { putimage(0, 0, &mm); peekmessage(&m); play->Show(); if (play->OnClickButton(m)) { mciSendString("open 1.mp3", 0, 0, 0); mciSendString("play 1.mp3", 0, 0, 0); } pause->Show(); if (pause->OnClickButton(m)) { mciSendString("pause 1.mp3", 0, 0, 0); } resume->Show(); if (resume->OnClickButton(m)) { mciSendString("resume 1.mp3", 0, 0, 0); } stop->Show(); if (stop->OnClickButton(m)) { mciSendString("close 1.mp3", 0, 0, 0); } FlushBatchDraw(); } EndBatchDraw(); closegraph(); return 0; }
讀到這里,這篇“C++音樂播放按鈕如何封裝”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。