EMWIN
文章目录
- EMWIN
- 前言
- 一、图形库基本 API 简介
-
- 1.画笔大小
- 2.基本绘图例程
- 二、Alpha 混色
-
- 1.API函数
- 2.代码演示
- 三、其他绘图函数
-
- 1.绘制线条
- 2.其他图像绘制函数
前言
emWin 提供有完整的 2-D 图形库,我们可以使用这些 2-D 图形库来绘制一些 2D 图形
一、图形库基本 API 简介
1.画笔大小
在绘制图形的时候我们常常需要不同粗细的线条,其实就是改变画笔的大小,emWin 中提供了 2 个关于画笔大小的 API 函数:GUI_GetPenSize()和 GUI_SetPenSize(),这两个函数分别用来获取当前画笔大小和改变当前画笔大小。
2.基本绘图例程
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() 倒转矩形区域。
代码:
void MainTask(void)
{
GUI_Init();
GUI_SetBkColor(GUI_BLUE);
GUI_Clear();
GUI_SetFont(&GUI_Font16_ASCII);
GUI_DispStringHCenterAt("ALIENEK BIN&HEX NUM DISPLAY", 160, 0);
GUI_SetColor(GUI_RED);
GUI_SetFont(&GUI_Font13_ASCII);
//基本绘制例程函数演示
GUI_SetBkColor(GUI_YELLOW);
GUI_ClearRect(5,20,95,110); //此函数使用背景颜色填充
GUI_SetBkColor(GUI_BLUE);
//绘制水平颜色梯度填充的矩形
GUI_DrawGradientH(100, 20, 190, 110, 0X4117BB, 0XC6B6F5);
//绘制垂直颜色梯度填充的圆角矩形
GUI_DrawGradientRoundedV(195, 20, 285, 110,25, 0X4117BB, 0XC6B6F5);
GUI_DrawRect(5,115,95,205);//在指定位置绘制矩形
GUI_FillRect(100,115,190,205);//在指定位置绘制填充的矩形区域
GUI_FillRoundedRect(195,115,285,205,25);//在指定位置绘制填充的圆角矩形
while(1);
}
二、Alpha 混色
Alpha 混合是一种合并前景图像与背景来创建半透明效果的方法。Alpha 值决定可见的像素 数 以 及 背 景 透 露 的 像 素 数 。 Alpha 混合完全自动执行。唯一需要做的就是使用GUI_EnableAlpha() 启用 Alpha 混合
1.API函数
GUI_EnableAlpha() 启用
GUI_RestoreUserAlpha() 恢复之前的用户
GUI_SetAlpha() 设置当前的
GUI_SetUserAlpha() 设置其他值,以用于计算要使用的实际
我们使用函数 GUI_EnableAlpha()来启用 Alpha,使用函数 GUI_SetAlpha()来设置 Alpha 的值,当值为 0 时表示不透明,为 255 时表示完全透明。使用 Alpha 会增加 CPU 的负荷,所以在操作完成后一定要将 Alpha 值设定为 0,即禁用 Alpha,或者也使用 GUI_EnableAlpha()来关闭Alpha 功能,只需要将函数 GUI_EnableAlpha()的参数设置为 0 即可。
2.代码演示
void MainTask(void)
{
GUI_Init();
GUI_SetBkColor(GUI_WHITE);
GUI_Clear();
GUI_SetFont(&GUI_Font16_ASCII);
GUI_SetColor(GUI_BLACK);
GUI_DispStringHCenterAt("ALIENEK ALPHA DISPLAY", 160, 0);
GUI_EnableAlpha(1); //开启 Alpha
GUI_SetColor(GUI_BLACK);
GUI_DispStringHCenterAt("Alphablending", 45, 61);
GUI_SetAlpha(40); //设置 Alpha 值
GUI_SetColor( GUI_RED);
GUI_FillRect(0, 20, 49, 69);
GUI_SetAlpha(80); //设置 Alpha 值
GUI_SetColor(GUI_GREEN);
GUI_FillRect(20, 40, 69, 89);
GUI_SetAlpha(40); //设置 Alpha 值
GUI_SetColor(GUI_BLUE);
GUI_FillRect(40, 60, 89, 109);
GUI_EnableAlpha(0); //关闭 Alpha
while (1);
}
三、其他绘图函数
1.绘制线条
GUI_DrawHLine() 绘制水平线。
GUI_DrawLine() 绘制从某个指定起点到指定终点的线条(绝对坐标)
GUI_DrawLineRel() 绘制从当前位置到按 X 和 Y 距离指定的终点的线条 (相对坐标)
GUI_DrawLineTo() 绘制从当前位置到指定终点的线条。
GUI_DrawPolyLine() 绘制折线。
GUI_DrawVLine() 绘制垂直线。
GUI_GetLineStyle() 返回当前的线条样式。
GUI_MoveRel() 相对于其当前位置移动线条指针。
GUI_MoveTo() 将线条指针移动到给定位置。
GUI_SetLineStyle() 设置当前的线条样式
示例代码
const GUI_POINT Points[] =
{
{
10,220},
{
56,100},
{
102,220},
{
148,100},
{
194,220}
};
void MainTask(void)
{
GUI_Init();
GUI_SetBkColor(GUI_BLUE);
GUI_Clear();
GUI_SetFont(&GUI_Font16_ASCII);
GUI_SetColor(GUI_RED);
GUI_DispStringHCenterAt("ALIENEK DRAW LINE DISPLAY", 160, 0);
GUI_DrawHLine(30,10,250);//绘制一条水平线
GUI_SetPenSize(3);
GUI_DrawLine(10,50,250,50);//绘制一条指定起点和终点的直线
GUI_SetPenSize(1);
GUI_SetLineStyle(GUI_LS_DASH); //设置线条样式为虚线
GUI_DrawLine(10, 70, 250, 70); //绘制一条指定起点和终点的直线
GUI_SetLineStyle(GUI_LS_SOLID); //设置线条样式为实线
GUI_DrawVLine(300,30,239); //绘制垂直线
GUI_SetPenSize(2);
GUI_DrawPolyLine(&Points,GUI_COUNTOF(Points),0,0); //连接预定的点列表
while (1);
}
2.其他图像绘制函数
绘制多边形
GUI_DrawPolygon() 绘制多边形的轮廓。
GUI_EnlargePolygon() 扩展多边形。
GUI_FillPolygon() 绘制填充的多边形。
GUI_MagnifyPolygon() 放大多边形。
GUI_RotatePolygon() 按指定角度旋转多边形。
绘制圆
GUI_DrawCircle() 绘制圆的轮廓。
GUI_FillCircle() 绘制填充的圆。
绘制椭圆
GUI_DrawEllipse() 绘制椭圆的轮廓。
GUI_FillEllipse() 绘制填充的椭圆。
绘制弧线
GUI_DrawArc() 绘制弧线。
绘制线图
UI_DrawGraph() 绘制线图。
绘制饼图
GUI_DrawPie() 绘制圆形扇区