硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2752|回复: 1
收起左侧

[emWin] 关于官方示例Speedometer的一处问题

[复制链接]

1

主题

0

回帖

3

积分

新手上路

积分
3
发表于 2016-12-4 17:22:25 | 显示全部楼层 |阅读模式
在研究speedometer这个例子时,发现整个表盘都是2D绘图绘出来的,而且绘制得特别酷炫,对于其中有一个颜色替换的函数_ReplaceColor()和_ReplaceColorGradient()函数中有一句代码不理解,求助论坛里的大神:
static void _ReplaceColorsGradient(GUI_MEMDEV_Handle hMem, GUI_MEMDEV_Handle hMemGradient) {
  U32 * pData;
  U32 * pDataGradient;
  int   i, j, xSize, ySize;
  U32   ColorGradient, Color;

  xSize         = GUI_MEMDEV_GetXSize(hMem);
  ySize         = GUI_MEMDEV_GetYSize(hMem);
  pData         = (U32 *)GUI_MEMDEV_GetDataPtr(hMem);
  pDataGradient = (U32 *)GUI_MEMDEV_GetDataPtr(hMemGradient);
  for (i = 0; i < ySize; i++) {
    ColorGradient = *pDataGradient++;
    for (j = 0; j < xSize; j++) {
      Color = *pData;
      if (Color) {
/*---------------------------------------------------------------------------------------------------*/
        *pData = ColorGradient| ((Color & 0xFF) ^ 0xFF) << 24; // 这句话不理解
/*---------------------------------------------------------------------------------------------------*/
      } else {
        *pData = GUI_TRANSPARENT;
      }
      *pData++;
    }
  }
}
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115723
QQ
发表于 2016-12-5 16:33:52 | 显示全部楼层
32位颜色数值的最低8位取反,作为alpha通道。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-14 15:07 , Processed in 0.275423 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表