3.emWin5.26(ucGui)VS2008 2-D图形库-基本绘图【Worldsing笔记】

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 下的运行效果:

posted on 2014-11-01 14:17  Worldsing  阅读(2844)  评论(0编辑  收藏  举报