第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 中文手册