|
我想用GUI_MEMDEV_PunchOut实现不规则图形显示,看到硬汉兄也推荐过用这个,问题是我发现显示效果和手册上是不一样的
模拟器测试代码如下:
- #include "GUI.h"
- /*********************************************************************
- *
- * MainTask
- */
- void MainTask(void) {
- GUI_MEMDEV_Handle hMemData;
- GUI_MEMDEV_Handle hMemMask;
- GUI_RECT Rect;
- GUI_Init();
- //
- // Background
- //
- GUI_SetBkColor(GUI_DARKBLUE);
- GUI_Clear();
- GUI_DrawGradientV(0, 0, 99, 49, GUI_DARKGRAY, GUI_DARKBLUE);
- GUI_SetColor(GUI_WHITE);
- //
- // Mask device
- //
- hMemMask = GUI_MEMDEV_CreateFixed(0, 0, 99, 49, GUI_MEMDEV_NOTRANS,
- GUI_MEMDEV_APILIST_8, GUICC_8);
- GUI_SetDrawMode(GUI_DM_TRANS);
- GUI_MEMDEV_Select(hMemMask);
- GUI_SetBkColor(GUI_BLACK);
- GUI_Clear();
- GUI_AA_FillCircle(49, 24, 20);
- GUI_SetPenSize(8);
- GUI_DrawLine(0, 0, 99, 49);
- //
- // Data Device
- //
- hMemData = GUI_MEMDEV_CreateFixed(0, 0, 99, 49, GUI_MEMDEV_NOTRANS,
- GUI_MEMDEV_APILIST_32, GUICC_8888);
- GUI_MEMDEV_Select(hMemData);
- GUI_SetBkColor(GUI_LIGHTGRAY);
- GUI_Clear();
- Rect.x0 = 6;
- Rect.y0 = 0;
- Rect.x1 = 99;
- Rect.y1 = 49;
- GUI_SetColor(GUI_DARKGRAY);
- GUI_DispStringInRectEx("Punch\r\nme\r\nout!", &Rect,
- GUI_TA_HCENTER | GUI_TA_VCENTER, 20, GUI_ROTATE_0);
- //
- // Result
- //
- GUI_MEMDEV_Select(0);
- GUI_MEMDEV_PunchOutDevice(hMemData, hMemMask);
- GUI_MEMDEV_Write(hMemData);
- while (1) {
- GUI_Delay(100);
- }
- }
复制代码
mask上黑色部分保持黑色,并没有显示背景的内容
|
-
手册上效果
-
实际上效果
|