UCGUI(emWin) 2-D圖形庫——之基本板繪圖,在ucgui的基本繪圖功能上來看,功能仍是比較全的,本例程主要使用基本的接口,兩個主要的概念是繪製(draw)和填充(Fill),這兩的區別是一個空心的,另外一個是實心的,用時注意加於區分,另外一個值得注意的是繪製模式,GUI_SetDrawMode(),目前emWin5.2有兩模式,一個是正常的繪製,另外一個是取反的方式繪製。 c++
例程代碼下載:3.emWin5.26(ucGui)VS2008 2-D圖形庫-基本繪圖.zip ui
GUI_GetPixelIndex() 返回給定位置的顏色指數。 spa
繪製模式 3d
GUI_GetDrawMode() 返回當前的繪製模式。 blog
GUI_SetDrawMode() 設置繪製模式。 接口
畫筆大小 ip
GUI_GetPenSize() 返回當前的畫筆大小 (像素)。 it
GUI_SetPenSize() 設置畫筆大小 (像素)。 io
查詢當前客戶區矩形 gui
GUI_GetClientRect() 返回當前可用的繪製區域。
基本繪製例程
GUI_ClearRect() 爲矩形區域填充背景顏色。
GUI_CopyRect() 複製顯示器中的一個矩形區域。
GUI_DrawGradientH() 繪製用水平顏色梯度填充的矩形。
GUI_DrawGradientV() 繪製用垂直顏色梯度填充的矩形。
GUI_DrawGradientRoundedH() 繪製用水平顏色梯度填充的圓角矩形。
GUI_DrawGradientRoundedV() 繪製用垂直顏色梯度填充的圓角矩形。
GUI_DrawPixel() 繪製單個像素。
GUI_DrawPoint() 繪製點。
GUI_DrawRect() 繪製矩形。
GUI_DrawRectEx() 繪製矩形。
GUI_DrawRoundedFrame() 繪製圓角框。
GUI_DrawRoundedRect() 繪製圓角矩形。
GUI_FillRect() 繪製填充的矩形。
GUI_FillRectEx() 繪製填充的矩形。
GUI_FillRoundedRect() 繪製填充的圓角矩形。
GUI_InvertRect() 倒轉矩形區域。
下面針對以上的每一個接口的使用方法寫個例程
#include "GUI.h"
#include "WM.h"
#include "CHECKBOX.h"
#include "FRAMEWIN.h"
#include "PROGBAR.h"
#include "TEXT.h"
#include "BUTTON.h"
#include "SLIDER.h"
#include "HEADER.h"
#include "GRAPH.h"
#include "ICONVIEW.h"
#include "LISTVIEW.h"
#include "TREEVIEW.h"
void MainTask(void) {
int Sec = 60;
int state;
GUI_RECT exRect = {220,40, 300, 50};
#if GUI_WINSUPPORT
WM_SetCreateFlags(WM_CF_MEMDEV);
#endif
GUI_Init();
#if GUI_WINSUPPORT
WM_MULTIBUF_Enable(1);
#endif
while(1)
{
GUI_GotoXY(0,0);
//延時
GUI_Delay(90);
Sec++;
Sec %= 61;
state = Sec % 4;
switch(state)
{
case 0:
GUI_DispString("0 - ");break;
case 1:
GUI_DispString("1 / ");break;
case 2:
GUI_DispString("2 | ");break;
case 3:
GUI_DispString("3 \\ "); break;
}
GUI_DispString("\nGUI_GetPixelIndex:");
GUI_DispDecMin(GUI_GetPixelIndex(0, 0));
GUI_DispString(" GUI_GetDrawMode:");
GUI_DispDecMin(GUI_GetDrawMode());
//默認的繪圖模式
GUI_SetDrawMode(GUI_DRAWMODE_NORMAL);
//在x=250,y=10位置填充半徑爲的圓
GUI_FillCircle(20, 10, 10);
//反轉的的繪圖模式
GUI_SetDrawMode(GUI_DRAWMODE_XOR);
//在x=280,y=10位置填充半徑爲的圓
GUI_FillCircle(280, 10, 10);
//設置畫筆大小
GUI_DispString("\n\nGUI_GetPenSize:");
GUI_SetPenSize(1);
//獲取畫筆大小
GUI_DispDecMin(GUI_GetPenSize());
GUI_DispString(" GUI_SetPenSize:");
//設置畫筆大小
GUI_SetPenSize(10);
GUI_DispDecMin(GUI_GetPenSize());
//清空, 5, 285, 15的方形區域
GUI_ClearRect(275, 5, 285, 15);
//複製,0起始位置的內容到, 32目標位置,複製大小x=50,y=8
GUI_DispString("\n\nGUI_CopyRect(0,0,50,0,50,8):->");
GUI_CopyRect(0,0, 180, 40, 50, 8);
//在矩形上垂直填充顏色,矩形x0=400,y0=0,x1=450,y1=50,起始色x0000FF 結束色x00FFFF
GUI_DrawGradientH(320, 0, 30, 50, 0x0000FF, 0x00FFFF);
//在矩形上垂直填充顏色,矩形x0=400,y0=0,x1=450,y1=50,起始色x0000FF 結束色x00FFFF
GUI_DrawGradientV(400, 0, 450, 50, 0x0000FF, 0x00FFFF);
GUI_DrawGradientRoundedH(320, 60, 370, 110, 10, 0x0000FF, 0x00FFFF);
GUI_DrawGradientRoundedV(400, 60, 450, 110, 10, 0x0000FF, 0x00FFFF);
//以畫筆大小畫點和以像素畫點
GUI_DispString("\n\nGUI_DrawPoint:");
GUI_DispString(" GUI_DrawPixel:");
GUI_DrawPoint(90, 60);
GUI_DrawPixel(190, 60);
//畫個空心的矩形
GUI_DrawRect(20,25, 300, 35);
GUI_DrawRectEx(&exRect);
//填充單色的圓角矩形,半徑< Xd && 3 < Yd
GUI_FillRoundedRect(220, 55, 30, 75, 3);
//設置畫筆大小
GUI_SetPenSize(1);
//填充單色的圓角矩形,半徑< Xd && 3 < Yd
GUI_FillRoundedFrame(0, 70, 99, 110, 4,3);
//圓角畫框,半徑,寬
GUI_DrawRoundedFrame(110, 70, 20, 110, 4,3);
//反向填充矩形(數據取反)
GUI_InvertRect(220, 80, 300, 100);
}
}
例程在VS2008 下的運行效果: