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); 
}

emwin 绘制速度_API

二、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);
}

emwin 绘制速度_圆角矩形_02

三、其他绘图函数

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);
}

emwin 绘制速度_emwin 绘制速度_03

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() 绘制圆形扇区