|
在使用Knob的时候我想给它做一个背景图片上去。方法是:1.先GUI_MEMDEV_CreateFixed32()新建一个颜色深度为32位bpp的存储设备。
- hKnob = KNOB_CreateUser(150, 10, 128, 128, hWin, WM_CF_SHOW | WM_CF_MEMDEV, ID_KNOB_0, 0);
- //为KNOB控制创建一个32位的存储设备
- hMemKnob = GUI_MEMDEV_CreateFixed32(0, 0, 128, 10);
- hMemKnobBk = GUI_MEMDEV_CreateFixed32(0, 0, 128, 128);
- //绘制KNOB的背景和内部
- _DrawKnob(hMemKnob);
- _DrawKnobBk(hMemKnobBk);
复制代码
2.在新建的存储设备中把背景清成透明色,再绘制图片等
以下代码是绘制的Knob的外观
- static void _DrawKnob(GUI_MEMDEV_Handle hMemDev) {
- int xSizeMem, ySizeMem;
- xSizeMem = GUI_MEMDEV_GetXSize(hMemDev);
- ySizeMem = GUI_MEMDEV_GetYSize(hMemDev);
- GUI_AA_PreserveTrans(1);
- GUI_MEMDEV_Select(hMemDev);
- GUI_SetBkColor(GUI_TRANSPARENT);
- //GUI_SetBkColor(0x80FFFFFF);
- GUI_Clear();
- GUI_AA_DrawLine(xSizeMem - 30, ySizeMem / 2, xSizeMem - 5, ySizeMem / 2);
- GUI_MEMDEV_Select(0);
- GUI_AA_PreserveTrans(0);
- }
复制代码
以下代码绘制的是KNOB的背景图片
- static void _DrawKnobBk(GUI_MEMDEV_Handle hMemDev) {
- int xSizeMem, ySizeMem;
- xSizeMem = GUI_MEMDEV_GetXSize(hMemDev);
- ySizeMem = GUI_MEMDEV_GetYSize(hMemDev);
- GUI_AA_PreserveTrans(1);
- GUI_MEMDEV_Select(hMemDev);
- GUI_SetBkColor(GUI_TRANSPARENT);
- //GUI_SetBkColor(0xF50000FF);
- GUI_Clear();
- GUI_SetColor(GUI_YELLOW);
- GUI_SetPenSize(4);
- GUI_DrawLine(0, 0, xSizeMem, ySizeMem);
- GUI_DrawLine(xSizeMem, 0, 0, ySizeMem);
- GUI_DrawBitmap(&bmKnob_128px, 0, 0);
- GUI_MEMDEV_Select(0);
- GUI_AA_PreserveTrans(0);
- }
复制代码 如上如果我直接使用GUI_TRANSPARENT透明色,那么背景显示的却是黑色的如下图
但是如果我在Knob的前景存储设备绘制带透明的东西却能正常显示如 GUI_SetBkColor(0x80FFFFFF);在前景存储设备中
如上图的Knob的指针绘制的时候是带有alpha通道的其绘制也是正常的。
有没有大佬能够解释一下是哪里我理解得不对吗?
|
|