|
发表于 2017-5-4 22:04:56
|
显示全部楼层
已经解决。思路是先绘出文字,然后用alpha混合,保持当前绘制颜色和背景颜色一致。
void MainTask(void) {
int i;
GUI_MEMDEV_Handle hMem1, hMem2;
GUI_Init();
GUI_EnableAlpha(1);
hMem1 = GUI_MEMDEV_Create(0, 0, 80, 30);
hMem2 = GUI_MEMDEV_Create(0, 0, 80, 30);
GUI_SetBkColor(GUI_BLACK);
GUI_Clear();
GUI_SetFont(&GUI_Font32B_ASCII);
GUI_SetTextMode(GUI_TM_TRANS);
GUI_GotoXY(0, 0);
GUI_SetColor(GUI_WHITE);
GUI_DispString("Text");
GUI_MEMDEV_Select(hMem1);
GUI_SetFont(&GUI_Font32B_ASCII);
GUI_SetTextMode(GUI_TM_TRANS);
GUI_SetColor(GUI_WHITE);
GUI_DispStringAt("Text", 0, 0);
for (i = 0; i < 30; i++){
GUI_SetAlpha(15 + 8*i);
GUI_SetColor(GUI_BLACK);
GUI_DrawLine(0,i,80,i+1);
GUI_SetAlpha(0);
}
GUI_MEMDEV_Select(hMem2);
GUI_MEMDEV_WriteExAt(hMem1, 0, 0, 1000, -1000, 200);
GUI_MEMDEV_CopyToLCDAt(hMem2, 0, 30);
while (1) {
GUI_Delay(100);
}
} |
|