第6章  2-D图形库 
 
µC/GUI包括有一个完整的2-D图形库,在大多数场下应用是足够了。µC/GUI提供的函数既
可以与裁剪区一道使用也可以脱离裁剪区使用(参考第12章“视窗管理器”),这些函数基
于快速及有效率的算法建立。 
目前,只有绘制圆弧函数要求浮点运算支持。
µC/GUI 中文手册 
第 1 页 
第 6 章  2-D 图形库 
6.1 API参考:图形 
下表列出了与图形处理相关的函数,在各自的类型中按字母顺序进行排列。函数的详细
描述后面列出。 
函  数 
说  明 
绘图模式 
GUI_SetDrawMode() 
设置绘图模式。 
GUI_ClearRect() 
GUI_DrawPixel() 
GUI_DrawPoint() 
GUI_FillRect() 
基本绘图函数 
使用背景颜色填充一个矩形区域。 
绘一个单像素点。 
绘一个点。 
绘一个填充的矩形。 
GUI_InvertRect() 
反转一个矩形区域。 
绘制位图 
GUI_DrawBitmap() 
绘制一幅位图。 
GUI_DrawBitmapExp() 
绘制一幅位图。 
GUI_DrawBitmapMag() 
绘制一幅放大的位图。 
GUI_DrawStreamedBitmap()  从一个位图数据流的数据绘制一幅位图。 
GUI_DrawHLine() 
GUI_DrawLine() 
GUI_DrawLineRel() 
绘线 
绘一根水平线。 
绘一根线。 
从当前坐标到端点绘一根线,该端点由X轴距
离及Y轴距离指定。 
GUI_DrawLineTo() 
从当前坐标到端点(X,Y)绘一根线。 
GUI_DrawPolyLine() 
绘折线。 
GUI_DrawVLine() 
绘一根垂直线。 
绘多边形 
GUI_DrawPolygon() 
绘一个多边形。 
GUI_EnlargePolygon() 
对一个多边形进行扩边。 
GUI_FillPolygon() 
绘一个填充的多边形。 
GUI_MagnifyPolygon() 
放大一个多边形。 
GUI_RotatePolygon() 
按指定角度旋转一个多边形。 
GUI_DrawCircle() 
GUI_FillCircle() 
绘圆 
绘一个圆。 
绘一个填充的圆。 
绘椭圆 
GUI_DrawEllipse() 
绘一个椭圆。 
GUI_FillEllipse() 
绘一个填充的椭圆。 
第 2 页 
µC/GUI 中文手册 
第 6 章  2-D 图形库  
绘圆弧 
绘一个圆弧 
GUI_DrawArc() 
6.2  绘图模式 
µC/GUI提供两种绘图模式,NORMAL模式及XOR模式。默认为NORMAL模式,即显示屏的内容
被绘图所完全覆盖。在XOR模式,当绘图覆盖在上面时,显示屏的内容反相显示。 
与GUI_DRAWMODE_XOR有关的限制 
XOR模式通常用于在活动视窗或屏幕中使用两种颜色进行显示的场合。 
• 
•  一些µC/GUI的绘图函数并不能正确地工作在这种模式。通常情况下,这模式只是工
作 于 一 个 像 素 大 小 的 笔 尖 尺 寸 。 这 意 味 着 在 使 用 类 似 GUI_DrawLine ,
GUI_DrawCircle,GUI_DrawRect等等这样的函数之前,你必须确定在XOR模式下,笔
尖尺寸已经设为1。 
•  当使用颜色的深度大于1位/像素(bpp)进行位图绘制,该模式无效。 
•  当使用诸如GUI_DrawPolyLine这样的函数或多次调用GUI_DrawLineTo函数,转角点
会反相两次。结果是这些像素保持背景颜色。 
GUI_SetDrawMode 
描述 
选择指定的绘图模式 
函数原型 
GUI_DRAWMODE GUI_SetDrawMode(GUI_DRAWMODE mode); 
参  数 
mode 
含  意 
设置的绘图模式。可以是任意设置绘图模式的函数的返回值或
是下表中的任一个。 
参数mode允许的数值 
GUI_DRAWMODE_NORMAL  默认:绘点,线,区域,位图 
GUI_DRAWMODE_XOR 
当在屏幕上另一个物体上用颜色覆盖时对点,线,区
域进行反相显示 
返回值 
µC/GUI 中文手册 
第 3 页 
第 6 章  2-D 图形库 
所选择的绘图模式 
附加信息 
作为设置绘图模式的附加功能,该函数也可以用于恢复原先被修改的绘图模式。 
如果使用颜色,一个反相的像素由下式算出: 
新像素颜色 = 颜色的数值 - 实际像素颜色 - 1 
范例 
// 显示两个圆,其中第二个以XOR模式与第一个结合 
GUI_Clear(); 
GUI_SetDrawMode(GUI_DRAWMODE_NORMAL); 
GUI_FillCircle(120, 64, 40); 
GUI_SetDrawMode(GUI_DRAWMODE_XOR); 
GUI_FillCircle(140, 84, 40); 
上面范例程序运行结果的屏幕截图 
6.3  基本绘图函数 
 
基本绘图函数允许在显示屏上的任何位置进行单独的点,水平和垂直线段和形状的绘制。
使用任何有效的绘图模式。因为这些函数在大多数应用中被频繁调用,因此它们已经被尽量
地优化以获得尽可能快的速度。例如,水平和垂直线段绘制函数不需要使用单个点绘制函数。 
GUI_ClearRect 
描述 
在当前视窗的指定位置通过向一个矩形区域填充背景色来清除它。 
第 4 页 
µC/GUI 中文手册 
第 6 章  2-D 图形库  
函数原型 
void GUI_ClearRect(int x0, int y0, int x1, int y1); 
参  数 
含  意 
x0 
y0 
x1 
y0 
左上角X坐标 
左上角Y坐标 
右下角X坐标 
右下角Y坐标 
相关主题 
GUI_InvertRect,GUI_FillRect 
GUI_DrawPixel 
描述 
在当前视窗的指定坐标绘一个像素点。 
函数原型 
void GUI_DrawPixel(int x, int y); 
参  数 
含  意 
x 
y 
像素点的X坐标 
像素点的Y坐标 
相关主题 
GUI_DrawPoint 
GUI_DrawPoint 
描述 
在当前视窗使用当前尺寸笔尖绘一个点。 
函数原型 
µC/GUI 中文手册 
第 5 页 
第 6 章  2-D 图形库 
void GUI_DrawPoint(int x, int y); 
参  数 
x 
y 
含  意 
点的X坐标 
点的Y坐标 
相关主题 
GUI_DrawPixel 
GUI_FillRect 
描述 
在当前视窗指定的位置绘一个矩形填充区域。 
函数原型 
void GUI_FillRect(int x0, int y0, int x1, int y1); 
参  数 
x0 
y0 
x1 
y0 
含  意 
左上角X坐标 
左上角Y坐标 
右下角X坐标 
右下角Y坐标 
附加信息 
使用当前的绘图模式,通常表示在矩形内的所有像素都被设置。 
相关主题 
GUI_InvertRect,GUI_ClearRect 
GUI_InvertRect 
描述 
在当前视窗的指定位置绘一反相的矩形区域。 
函数原型 
第 6 页 
µC/GUI 中文手册 
第 6 章  2-D 图形库  
void GUI_InvertRect(int x0, int y0, int x1, int y1); 
参  数 
x0 
y0 
x1 
y0 
含  意 
左上角X坐标 
左上角Y坐标 
右下角X坐标 
右下角Y坐标 
相关主题 
GUI_FillRect,GUI_ClearRect 
6.4  绘制位图 
GUI_DrawBitmap 
描述 
在当前视窗的指定位置绘一幅位图。 
函数原型 
void GUI_DrawBitmap(const GUI_BITMAP*pBM, int x, int y); 
参  数 
含  意 
pBM 
需显示位图的指针 
x 
y 
位图在屏幕上位置的左上角X坐标 
位图在屏幕上位置的左上角Y坐标 
附加信息 
位图数据必须定义为像素×像素。每个像素等同于一位。最高有效位(MSB)定义第一个
像素;图片数据以位流进行说明,以第一个字节的MSB作为起始。新的一行总是在一个偶数地
址开始,而位图的第N行在地址偏移量n* BytesPerLine处开始。位图可以在客户区中任意一
点显示,位图转换器用于产生位图。 
范例 
extern const GUI_BITMAP bmMicriumLogo;   
/* 声明外部位图 */ 
void main()  
µC/GUI 中文手册 
第 7 页 
第 6 章  2-D 图形库 
{ 
} 
GUI_Init(); 
GUI_DrawBitmap(&bmMicriumLogo,45,20); 
上面范例程序运行结果的屏幕截图 
GUI_DrawBitmapExp 
描述 
 
与GUI_DrawBitmap函数具有相同功能,但是带有扩展参数设置。 
函数原型 
void GUI_DrawBitmapExp( int x0, int y0, 
int XSize, int YSize, 
int XMul, int YMul,  
int BitsPerPixel, 
int BytesPerLine, 
const U8* pData, 
const GUI_LOGPALETTE* pPal); 
参  数 
x 
y 
Xsize 
Ysize 
XMuL 
YMuL 
含  意 
位图在屏幕上位置的左上角X坐标 
位图在屏幕上位置的左上角Y坐标 
水平方向像素的数量,有效范围:1~255 
垂直方向像素的数量,有效范围:1~255 
X轴方向比例因数 
Y轴方向比例因数 
BitsPerPixel  每像素的位数 
BytesPerLine  图形每行的字节数 
pData 
pPal 
实际图形的指针,该数据定义位图的外表特征 
指向GUI_LOGPALETTE结构的指针 
第 8 页 
µC/GUI 中文手册