graphics.h圖形庫用法總結

說明:本篇文章是根據easyX上的說明文檔和自己常用的一些內容所作出的一些總結,是一個方便初學者記憶的學習內容的框架。如果想要更全,更加詳細的信息,可以直接查閱ezsyX_help.chm文檔

  • graphics.h圖形庫可以在windows平臺下的vsc++下運行的圖形化庫(額外安裝),我們要明白的是c++也是有許多不同的。比如GNU和vs的c++,他們就是屬於不同家的。因此,有些程序會有不同的結果出來。
  • easyX下載地址(vs2019的話要下載那個測試版的)

1. 基本說明

座標: 基本所有語言圖形繪製的座標都是從左上角開始,水平向右爲x軸,豎直向下爲y軸,單位像素
initgraph(int x,int y[,flag=]) :創建一個橫長x,豎長爲y的圖形窗,flag特性,一般用不到。
_getch() :圖形關閉之前通常要鍵盤獲得一個字符,否則圖形一閃就沒了。
closegraph() :關閉圖形窗口函數。
cleardevice() :清空屏幕,之後會界面內容全部清空,顯示爲默認背景顏色。(一般用在更改背景色後)

2. 顏色模型

graphics.h 裏面的顏色爲RGB顏色,可以用 RGB(a,b,c) 表示任意一種顏色,其他常用顏色也可以用英文的大寫表示。如:RED,BLUE等。

  1. 設置顏色的模型
    setbkcolor():設置背景顏色,參數顏色。
    setfillcolor():設置填充繪製圖形式所用的顏色。
  • 上面就是設置顏色的模型,把紅色的部分換成相應的即可,常用的有bk(背景),fill(填充),line(線的顏色),text(文本)
  1. 設置風格樣式的模型
    setfillstyle():設置填充樣式,比如豎線,橫線,方格填充。(這裏不做說明
    setlinestyle():設置線的填充樣式
    setbkmode():圖案,或文字填充的背景模式(背景色,透明)。
  • 顏色的傳入參數直接爲顏色即可,樣式的需要特殊值
  • set換成get即是改爲到相應的顏色,樣式參數

3. 圖形繪製

line(x1,y1,x2,y2):直線。兩端點座標
rectangle(x1,y1,x2,y2):空心矩形。左上角座標,右下角座標
circle(x,y,r):空心圓。圓心座標,半徑
ellipse(x1,y1,x2,y2):橢圓。外切矩形左上角座標,外切矩形右下角座標。

  • 上面的函數均是畫的圖形邊框,除了直線外都可以用前綴fill-代表填充方式繪製圖形(繪製面積),前綴clear-代表清空一個圖形區域,如fillcircle()填充一個圓。

putpixel(x,y,color):畫點。座標,顏色

繪製圓弧和多邊形這裏不做說明。

4. 文字輸出

outtextxy(x,y,str):在x,y位置輸出字符串str
文字的只寫一個函數,其他的不做說明,需要的話可以自己查閱資料。
文本的顏色函數,(可以放在2中的顏色模型一起記,也可以在這。)
settextcolor() 、settextstyle()
gettextcolor() 、gettextstyle()

5.圖像處理

圖像應該讀取到圖像對象IMAGE變量中(全大寫,類似char是個類型)

IMAGE img;
loadimage(&img,path[, width, height]):圖像讀取。IMAGE對象地址,路徑。擴展參數,已制定寬高,拉伸讀取。
putimage(x0,y0,&img):圖像展示。圖形窗口左上角座標處開始展示img圖形。
putimage(x0,y0,w,h,&img,x,y):圖像展示。和上面相比,w,h爲要展示多少像素圖形,x,y爲img對象從該位置開始展示。

  • 透明貼圖技巧:
    含義:比如我們圖形窗口已經有一個背景,我們想把一張人物照片中的人貼上去,但是照片上人以外的背景不展示。
  1. 掩碼圖:白底黑物,如(imgy):
    在這裏插入圖片描述
  2. 背景圖:黑底實物,如(img):
    在這裏插入圖片描述
  3. 貼圖步驟,用SRCAND貼掩碼圖,用SRCPAINT貼背景圖
putimage(0,0,&imgy,SRCAND);
putimage(0,0,&img,SRCPAINT);

之後就能只把不知火舞這個人給畫上去

5.鼠標處理

鼠標對象MOUSEMSG 是一個結構體。內部有參數,x,y(鼠標座標),uMsg(發生的消息)等值。
uMsg類型有:
WM_LBOTTONDOWM

  • 很顯然前面的WM_是一個固定形式,後面三部分是可變的。左邊藍色的值分別爲L,M,R分別代表鼠標左鍵,中鍵,右鍵。右邊綠色的值分別爲DOWN,UP,DBLCLK代表按下,鬆起,雙擊信息。
  • 中鍵的button相對應的式鼠標的移動操作WM_MOUSEMOVE()

GetMouseMsg():成員函數,調用這個函數後程序會一直卡在哪裏,知道獲得一個鼠標操作信息存到成員變量uMsg中。
FlushMouseMsgBuffer():成員函數,清空鼠標緩衝區信息。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章