|
在研究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++;
}
}
} |
|