有没有人遇见STemwin透明显示这个问题,求帮忙。

2019-03-23 17:55发布


我在STM32F411上移植STemwin和FreeRTOS软件。STemwin这个GUI软件很强大,想学习一下。驱动都移植好了,也可以正常显示。就按教程一步一步的学习。遇到了一些问题,但都解决了。在这里也就我分析的过程做一个说明。
GUI_SetBkColor(GUI_BLUE);
        GUI_Clear();
        GUI_SetPenSize(10);
        GUI_SetColor(GUI_RED);
        GUI_DrawLine(00, 10, 160, 90);
        GUI_DrawLine(00, 90, 160, 10);
        GUI_SetBkColor(GUI_BLACK);
        GUI_SetColor(GUI_WHITE);
        GUI_SetTextMode(GUI_TM_NORMAL);
        GUI_DispStringAt("GUI_TM_NORMAL" , 0, 10);
        GUI_SetTextMode(GUI_TM_REV);
        GUI_DispStringAt("GUI_TM_REV" , 0, 26);
        GUI_SetTextMode(GUI_TM_TRANS);
        GUI_DispStringAt("GUI_TM_TRANS" , 0, 42);
        GUI_SetTextMode(GUI_TM_XOR);
        GUI_DispStringAt("GUI_TM_XOR" , 0, 58);
        GUI_SetTextMode(GUI_TM_TRANS | GUI_TM_REV);
        GUI_DispStringAt("GUI_TM_TRANS | GUI_TM_REV", 0, 74);
        GUI_SetTextMode(GUI_TM_TRANS | GUI_TM_REV);
        GUI_DispStringAt("GUI_TM_TRANS | GUI_TM_REV", 0, 74);

正常显示 正常显示
这个效果中可以证明可以正常读到显示屏上的点,因为在GUI_TM_XOR有一个异或操作,这个就用到了读点函数。显示效果过和官方文档显示的一致。当然程序做了一部分修改,屏太小了。
但是一打开alpha这个功能显示就出现异常。如下图所示。
IMG_20160721_090553.jpg
和例程提供的函数相差太大,基本上就是错误,除了显示范围正确外。
正常.jpg
                   正常应该显示的效果
        GUI_EnableAlpha(1);//打开alpha
        GUI_SetBkColor(GUI_WHITE);
        GUI_Clear();
        GUI_SetColor((0x40uL << 24) | GUI_RED);
        GUI_FillRect(0, 0, 39, 39);
        GUI_SetColor((0x80uL << 24) | GUI_GREEN);
        GUI_FillRect(20, 20, 69, 69);
        GUI_SetColor((0xC0uL << 24) | GUI_BLUE);
        GUI_FillRect(40, 40, 89, 89);
        GUI_EnableAlpha(0); //关闭alpha显示



还有一个效果是,在开启并关闭alpha通道后,再做之前的任何操作,全部不能正常显示。
         GUI_EnableAlpha(1);
        GUI_SetBkColor(GUI_WHITE);
        GUI_Clear();
        GUI_SetColor((0x40uL << 24) | GUI_RED);
        GUI_FillRect(0, 0, 39, 39);
        GUI_SetColor((0x80uL << 24) | GUI_GREEN);
        GUI_FillRect(20, 20, 69, 69);
        GUI_SetColor((0xC0uL << 24) | GUI_BLUE);
        GUI_FillRect(40, 40, 89, 89);
        GUI_EnableAlpha(0);
        //关闭alpha后重新显示正常的效果
        GUI_SetBkColor(GUI_BLUE);
        GUI_Clear();
        GUI_SetPenSize(10);
        GUI_SetColor(GUI_RED);
        GUI_DrawLine(00, 10, 160, 90);
        GUI_DrawLine(00, 90, 160, 10);
        GUI_SetBkColor(GUI_BLACK);
        GUI_SetColor(GUI_WHITE);
        GUI_SetTextMode(GUI_TM_NORMAL);
        GUI_DispStringAt("GUI_TM_NORMAL" , 0, 10);
        GUI_SetTextMode(GUI_TM_REV);
        GUI_DispStringAt("GUI_TM_REV" , 0, 26);
        GUI_SetTextMode(GUI_TM_TRANS);
        GUI_DispStringAt("GUI_TM_TRANS" , 0, 42);
        GUI_SetTextMode(GUI_TM_XOR);
        GUI_DispStringAt("GUI_TM_XOR" , 0, 58);
        GUI_SetTextMode(GUI_TM_TRANS | GUI_TM_REV);
        GUI_DispStringAt("GUI_TM_TRANS | GUI_TM_REV", 0, 74);
        GUI_SetTextMode(GUI_TM_TRANS | GUI_TM_REV);
        GUI_DispStringAt("GUI_TM_TRANS | GUI_TM_REV", 0, 74);
IMG_20160721_094104.jpg

花了两天来查这个问题,但是一直没有解决。大家是不是也遇到过这个问题。
目前我怀疑两点,第一是该GUI使用了浮点运算,是不是和FPU有关系?
在使用alpha后出现这种现象,和GUI底层有关系。但是被封装了,不能查看。
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
cxzs1234
1楼-- · 2019-03-24 13:25
QQ截图20161125154339.jpg
cxzs1234
2楼-- · 2019-03-24 15:25
 精彩回答 2  元偷偷看……

一周热门 更多>