GUI簡(jiǎn)析
對(duì)于屏幕而言,如果需要進(jìn)行畫圖、顯示中英文字符、顯示圖片等怎么辦,這些都是上層應(yīng)用做的。這有很多小伙伴有問到一些圖形的處理,我們這里提供了一些基本的功能 在目錄:RaspberryPi\c\lib\GUI\GUI_Paint.c(.h)中可以找到GUI
在目錄:RaspberryPi\c\lib\Fonts下是GUI依賴的字符字體,
- 新建圖像屬性:新建一個(gè)圖像屬性,這個(gè)屬性包括圖像緩存的名稱、寬度、高度、翻轉(zhuǎn)角度、顏色
void Paint_NewImage(UBYTE *image, UWORD Width, UWORD Height, UWORD Rotate, UWORD Color) 參數(shù): image: 圖像緩存的名稱,實(shí)際上是一個(gè)指向圖像緩存首地址的指針; Width: 圖像緩存的寬度; Height: 圖像緩存的高度; Rotate:圖像的翻轉(zhuǎn)的角度 Color :圖像的初始顏色;
- 選擇圖像緩存:選擇圖像緩存,選擇的目的是你可以創(chuàng)建多個(gè)圖像屬性,圖像緩存可以存在多個(gè),你可以選擇你所創(chuàng)建的每一張圖像
void Paint_SelectImage(UBYTE *image) 參數(shù): image: 圖像緩存的名稱,實(shí)際上是一個(gè)指向圖像緩存首地址的指針;
- 圖像旋轉(zhuǎn):設(shè)置選擇好的圖像的旋轉(zhuǎn)角度,最好使用在Paint_SelectImage()后,可以選擇旋轉(zhuǎn)0、90、180、270
void Paint_SetRotate(UWORD Rotate) 參數(shù): Rotate: 圖像選擇角度,可以選擇ROTATE_0、ROTATE_90、ROTATE_180、ROTATE_270分別對(duì)應(yīng)0、90、180、270度
- 設(shè)置像素點(diǎn)的尺寸
void Paint_SetScale(UBYTE scale) 參數(shù): scale: 像素點(diǎn)的尺寸,2:每個(gè)像素點(diǎn)占一位;4:每個(gè)像素點(diǎn)占兩位
- 圖像鏡像翻轉(zhuǎn):設(shè)置選擇好的圖像的鏡像翻轉(zhuǎn),可以選擇不鏡像、關(guān)于水平鏡像、關(guān)于垂直鏡像、關(guān)于圖像中心鏡像。
void Paint_SetMirroring(UBYTE mirror) 參數(shù): mirror: 圖像的鏡像方式,可以選擇MIRROR_NONE、MIRROR_HORIZONTAL、MIRROR_VERTICAL、MIRROR_ORIGIN分別對(duì)應(yīng)不鏡像、關(guān)于水平鏡像、關(guān)于垂直鏡像、關(guān)于圖像中心鏡像
- 設(shè)置點(diǎn)在緩存中顯示位置和顏色:這里是GUI最核心的一個(gè)函數(shù)、處理點(diǎn)在緩存中顯示位置和顏色;
void Paint_SetPixel(UWORD Xpoint, UWORD Ypoint, UWORD Color) 參數(shù): Xpoint: 點(diǎn)在圖像緩存中X位置 Ypoint: 點(diǎn)在圖像緩存中Y位置 Color: 點(diǎn)顯示的顏色
- 圖像緩存填充顏色:把圖像緩存填充為某顏色,一般作為屏幕刷白的作用
void Paint_Clear(UWORD Color) 參數(shù): Color: 填充的顏色
- 圖像緩存部分窗口填充顏色:把圖像緩存的某部分窗口填充為某顏色,一般作為窗口刷白的作用,常用于時(shí)間的顯示,刷白上一秒
void Paint_ClearWindows(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, UWORD Color) 參數(shù): Xstart: 窗口的X起點(diǎn)坐標(biāo) Ystart: 窗口的Y起點(diǎn)坐標(biāo) Xend: 窗口的X終點(diǎn)坐標(biāo) Yend: 窗口的Y終點(diǎn)坐標(biāo) Color: 填充的顏色
- 畫點(diǎn):在圖像緩存中,在(Xpoint, Ypoint)上畫點(diǎn),可以選擇顏色,點(diǎn)的大小,點(diǎn)的風(fēng)格
void Paint_DrawPoint(UWORD Xpoint, UWORD Ypoint, UWORD Color, DOT_PIXEL Dot_Pixel, DOT_STYLE Dot_Style) 參數(shù): Xpoint: 點(diǎn)的X坐標(biāo) Ypoint: 點(diǎn)的Y坐標(biāo) Color: 填充的顏色 Dot_Pixel: 點(diǎn)的大小,提供默認(rèn)的8種大小點(diǎn) typedef enum { DOT_PIXEL_1X1 = 1, // 1 x 1 DOT_PIXEL_2X2 , // 2 X 2 DOT_PIXEL_3X3 , // 3 X 3 DOT_PIXEL_4X4 , // 4 X 4 DOT_PIXEL_5X5 , // 5 X 5 DOT_PIXEL_6X6 , // 6 X 6 DOT_PIXEL_7X7 , // 7 X 7 DOT_PIXEL_8X8 , // 8 X 8 } DOT_PIXEL; Dot_Style: 點(diǎn)的風(fēng)格,大小擴(kuò)充方式是以點(diǎn)為中心擴(kuò)大還是以點(diǎn)為左下角往右上擴(kuò)大 typedef enum { DOT_FILL_AROUND = 1, DOT_FILL_RIGHTUP, } DOT_STYLE;
- 畫線:在圖像緩存中,從 (Xstart, Ystart) 到 (Xend, Yend) 畫線,可以選擇顏色,線的寬度,線的風(fēng)格
void Paint_DrawLine(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, UWORD Color, LINE_STYLE Line_Style , LINE_STYLE Line_Style) 參數(shù): Xstart: 線的X起點(diǎn)坐標(biāo) Ystart: 線的Y起點(diǎn)坐標(biāo) Xend: 線的X終點(diǎn)坐標(biāo) Yend: 線的Y終點(diǎn)坐標(biāo) Color: 填充的顏色 Line_width: 線的寬度,提供默認(rèn)的8種寬度 typedef enum { DOT_PIXEL_1X1 = 1, // 1 x 1 DOT_PIXEL_2X2 , // 2 X 2 DOT_PIXEL_3X3 , // 3 X 3 DOT_PIXEL_4X4 , // 4 X 4 DOT_PIXEL_5X5 , // 5 X 5 DOT_PIXEL_6X6 , // 6 X 6 DOT_PIXEL_7X7 , // 7 X 7 DOT_PIXEL_8X8 , // 8 X 8 } DOT_PIXEL; Line_Style: 線的風(fēng)格,選擇線是以直線連接還是以虛線的方式連接 typedef enum { LINE_STYLE_SOLID = 0, LINE_STYLE_DOTTED, } LINE_STYLE;
- 畫矩形:在圖像緩存中,從 (Xstart, Ystart) 到 (Xend, Yend) 畫一個(gè)矩形,可以選擇顏色,線的寬度,是否填充矩形內(nèi)部
void Paint_DrawRectangle(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, UWORD Color, DOT_PIXEL Line_width, DRAW_FILL Draw_Fill) 參數(shù): Xstart: 矩形的X起點(diǎn)坐標(biāo) Ystart: 矩形的Y起點(diǎn)坐標(biāo) Xend: 矩形的X終點(diǎn)坐標(biāo) Yend: 矩形的Y終點(diǎn)坐標(biāo) Color: 填充的顏色 Line_width: 矩形四邊的寬度,提供默認(rèn)的8種寬度 typedef enum { DOT_PIXEL_1X1 = 1, // 1 x 1 DOT_PIXEL_2X2 , // 2 X 2 DOT_PIXEL_3X3 , // 3 X 3 DOT_PIXEL_4X4 , // 4 X 4 DOT_PIXEL_5X5 , // 5 X 5 DOT_PIXEL_6X6 , // 6 X 6 DOT_PIXEL_7X7 , // 7 X 7 DOT_PIXEL_8X8 , // 8 X 8 } DOT_PIXEL; Draw_Fill: 填充,是否填充矩形的內(nèi)部 typedef enum { DRAW_FILL_EMPTY = 0, DRAW_FILL_FULL, } DRAW_FILL;
- 畫圓:在圖像緩存中,以 (X_Center Y_Center) 為圓心,畫一個(gè)半徑為Radius的圓,可以選擇顏色,線的寬度,是否填充圓內(nèi)部
void Paint_DrawCircle(UWORD X_Center, UWORD Y_Center, UWORD Radius, UWORD Color, DOT_PIXEL Line_width, DRAW_FILL Draw_Fill) 參數(shù): X_Center: 圓心的X坐標(biāo) Y_Center: 圓心的Y坐標(biāo) Radius:圓的半徑 Color: 填充的顏色 Line_width: 圓弧的寬度,提供默認(rèn)的8種寬度 typedef enum { DOT_PIXEL_1X1 = 1, // 1 x 1 DOT_PIXEL_2X2 , // 2 X 2 DOT_PIXEL_3X3 , // 3 X 3 DOT_PIXEL_4X4 , // 4 X 4 DOT_PIXEL_5X5 , // 5 X 5 DOT_PIXEL_6X6 , // 6 X 6 DOT_PIXEL_7X7 , // 7 X 7 DOT_PIXEL_8X8 , // 8 X 8 } DOT_PIXEL; Draw_Fill: 填充,是否填充圓的內(nèi)部 typedef enum { DRAW_FILL_EMPTY = 0, DRAW_FILL_FULL, } DRAW_FILL;
- 寫Ascii字符:在圖像緩存中,在 (Xstart Ystart) 為左頂點(diǎn),寫一個(gè)Ascii字符,可以選擇Ascii碼可視字符字庫、字體前景色、字體背景色
void Paint_DrawChar(UWORD Xstart, UWORD Ystart, const char Ascii_Char, sFONT* Font, UWORD Color_Foreground, UWORD Color_Background) 參數(shù): Xstart: 字符的左頂點(diǎn)X坐標(biāo) Ystart: 字體的左頂點(diǎn)Y坐標(biāo) Ascii_Char:Ascii字符 Font: Ascii碼可視字符字庫,在Fonts文件夾中提供了以下字體: font8:5*8的字體 font12:7*12的字體 font16:11*16的字體 font20:14*20的字體 font24:17*24的字體 Color_Foreground: 字體顏色 Color_Background: 背景顏色
- 寫英文字符串:在圖像緩存中,在 (Xstart Ystart) 為左頂點(diǎn),寫一串英文字符,可以選擇Ascii碼可視字符字庫、字體前景色、字體背景色
void Paint_DrawString_EN(UWORD Xstart, UWORD Ystart, const char * pString, sFONT* Font, UWORD Color_Foreground, UWORD Color_Background) 參數(shù): Xstart: 字符的左頂點(diǎn)X坐標(biāo) Ystart: 字體的左頂點(diǎn)Y坐標(biāo) pString:字符串,字符串是一個(gè)指針 Font: Ascii碼可視字符字庫,在Fonts文件夾中提供了以下字體: font8:5*8的字體 font12:7*12的字體 font16:11*16的字體 font20:14*20的字體 font24:17*24的字體 Color_Foreground: 字體顏色 Color_Background: 背景顏色
- 寫中文字符串:在圖像緩存中,在 (Xstart Ystart) 為左頂點(diǎn),寫一串中文字符,可以選擇GB2312編碼字符字庫、字體前景色、字體背景色;
void Paint_DrawString_CN(UWORD Xstart, UWORD Ystart, const char * pString, cFONT* font, UWORD Color_Foreground, UWORD Color_Background) 參數(shù): Xstart: 字符的左頂點(diǎn)X坐標(biāo) Ystart: 字體的左頂點(diǎn)Y坐標(biāo) pString:字符串,字符串是一個(gè)指針 Font: GB2312編碼字符字庫,在Fonts文件夾中提供了以下字體: font12CN:ascii字符字體11*21,中文字體16*21 font24CN:ascii字符字體24*41,中文字體32*41 Color_Foreground: 字體顏色 Color_Background: 背景顏色
- 寫數(shù)字:在圖像緩存中,在 (Xstart Ystart) 為左頂點(diǎn),寫一串?dāng)?shù)字,可以選擇Ascii碼可視字符字庫、字體前景色、字體背景色
void Paint_DrawNum(UWORD Xpoint, UWORD Ypoint, double Nummber, sFONT* Font, UWORD Digit, UWORD Color_Foreground, UWORD Color_Background) 參數(shù): Xpoint: 字符的左頂點(diǎn)X坐標(biāo) Ypoint: 字體的左頂點(diǎn)Y坐標(biāo) Nummber:顯示的數(shù)字,可以是小數(shù) Digit:小數(shù)位數(shù),不足補(bǔ)零 Font: Ascii碼可視字符字庫,在Fonts文件夾中提供了以下字體: font8:5*8的字體 font12:7*12的字體 font16:11*16的字體 font20:14*20的字體 font24:17*24的字體 Color_Foreground: 字體顏色 Color_Background: 背景顏色
- 顯示時(shí)間:在圖像緩存中,在 (Xstart Ystart) 為左頂點(diǎn),顯示一段時(shí)間,可以選擇Ascii碼可視字符字庫、字體前景色、字體背景色;
void Paint_DrawTime(UWORD Xstart, UWORD Ystart, PAINT_TIME *pTime, sFONT* Font, UWORD Color_Background, UWORD Color_Foreground) 參數(shù): Xstart: 字符的左頂點(diǎn)X坐標(biāo) Ystart: 字體的左頂點(diǎn)Y坐標(biāo) pTime:顯示的時(shí)間,這里定義好了一個(gè)時(shí)間的結(jié)構(gòu)體,只要把時(shí)分秒各位數(shù)傳給參數(shù); Font: Ascii碼可視字符字庫,在Fonts文件夾中提供了以下字體: font8:5*8的字體 font12:7*12的字體 font16:11*16的字體 font20:14*20的字體 font24:17*24的字體 Color_Foreground: 字體顏色 Color_Background: 背景顏色
審核編輯:湯梓紅
-
屏幕
+關(guān)注
關(guān)注
6文章
1199瀏覽量
55804 -
字符
+關(guān)注
關(guān)注
0文章
233瀏覽量
25210 -
GUI
+關(guān)注
關(guān)注
3文章
660瀏覽量
39685
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論