UCGUI(emWin) 2-D图形库——之基本板绘图,在ucgui的基本绘图功能上来看,功能还是比较全的,本例程主要使用基本的接口,两个主要的概念是绘制(draw)和填充(Fill),这两的区别是一个空心的,另一个是实心的,用时注意加于区分,另一个值得注意的是绘制模式,GUI_SetDrawMode(),目前emWin5.2有两模式,一个是正常的绘制,另一个是取反的方式绘制。
例程代码下载:3.emWin5.26(ucGui)VS2008 2-D图形库-基本绘图.zip
GUI_GetPixelIndex() 返回给定位置的颜色指数。
绘制模式
GUI_GetDrawMode() 返回当前的绘制模式。
GUI_SetDrawMode() 设置绘制模式。
画笔大小
GUI_GetPenSize() 返回当前的画笔大小 (像素)。
GUI_SetPenSize() 设置画笔大小 (像素)。
查询当前客户区矩形
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 下的运行效果: