TouchGFX内置的渐变色API(如HAL::lcd().fillBufferRectGrad())的源码
时间: 2024-02-17 11:00:09 浏览: 26
HAL::lcd().fillBufferRectGrad()是TouchGFX中用于绘制渐变色矩形的API,其源码如下:
```c++
void LCD::fillBufferRectGrad(int x, int y, int width, int height, colortype colorStart, colortype colorEnd, GradientOrientation orientation)
{
Rect r(x, y, width, height);
switch (orientation)
{
case GRADIENT_ORIENTATION_VERTICAL:
for (int j = y; j < y + height; j++)
{
colortype color = mixColors(colorStart, colorEnd, (j - y) * 255 / height);
fillBufferRect(r, color);
r.y++;
}
break;
case GRADIENT_ORIENTATION_HORIZONTAL:
for (int i = x; i < x + width; i++)
{
colortype color = mixColors(colorStart, colorEnd, (i - x) * 255 / width);
fillBufferRect(r, color);
r.x++;
}
break;
case GRADIENT_ORIENTATION_VERTICAL_INVERSE:
for (int j = y + height - 1; j >= y; j--)
{
colortype color = mixColors(colorStart, colorEnd, (j - y) * 255 / height);
fillBufferRect(r, color);
r.y++;
}
break;
case GRADIENT_ORIENTATION_HORIZONTAL_INVERSE:
for (int i = x + width - 1; i >= x; i--)
{
colortype color = mixColors(colorStart, colorEnd, (i - x) * 255 / width);
fillBufferRect(r, color);
r.x++;
}
break;
default:
break;
}
}
```
该函数接受6个参数:x、y、width、height、colorStart、colorEnd和orientation。其中,x、y、width、height表示渐变色矩形的位置和大小,colorStart和colorEnd表示渐变色的开始和结束颜色,orientation表示渐变方向。
代码中使用了mixColors函数来计算渐变色。该函数接受3个参数:color1、color2和ratio。它会根据ratio的值,将color1和color2按照一定的比例混合,返回混合后的颜色。
最后,根据渐变方向,使用fillBufferRect函数在每个像素位置上填充对应的渐变色。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)