找回密码
 注册
搜索
查看: 1452|回复: 5

[讨论] 字符重影如何去除?[见内图]

[复制链接]
发表于 2008-8-25 15:47:27 | 显示全部楼层 |阅读模式
我的版本26
我的操作:
1:修改button上的字符格式
void gui_show_icontext_button(icontext_button *b)
{
    ...
        gui_print_text(b->text);//修改为不带边框的字符
        //gui_print_bordered_text(b->text);   /* print bordered text on button */
        gui_pop_text_clip();
   ...
}
修改后导致两个界面的异常:
<1>待机界面菜单按钮出现 重影;
<2>拨号盘界面出现重影;
2:修复重影的操作:下面函数中添加gdi_draw_solid_rect函数
void gui_show_icontext_button(icontext_button *b)
{
    ...
    gui_push_clip();
    if (!(b->flags & UI_BUTTON_DISABLE_BACKGND_DISPLAY))
    {
        gui_set_clip(x1, y1, x2 + 2, y2 + 2);
        gui_draw_filled_area(x1, y1, x2, y2, f);
    }
    else
    {
        gui_set_clip(x1, y1, x2, y2);
        //添加该函数来消除重影
        gdi_draw_solid_rect(x1, y1, x2, y2, GDI_COLOR_TRANSPARENT);   
    }

   ...
}
这样修复了待机界面的重影、和拨号盘的重影[button字符]

但是又导致写短信、计算器上面的button bar这个条形图片240X24[button bar 高度]这个图片被刷没有了,底色变为白色!
请问是什么原因?
我跟了一下代码,发现重影的button 和没有重影的button走的流程是一样的,但是为什么出现了不同的效果??
 楼主| 发表于 2008-8-25 15:50:25 | 显示全部楼层
顺便大家讨论一下:
gdi_draw_solid_rect(x1, y1, x2, y2, GDI_COLOR_TRANSPARENT);
函数为什么有时候刷新了底色为白色而不是透明??
点评回复

使用道具 举报

 楼主| 发表于 2008-8-27 14:23:29 | 显示全部楼层
??????????????????????????????????????????
点评回复

使用道具 举报

 楼主| 发表于 2008-8-27 14:23:56 | 显示全部楼层
?????????????????????????????????????????????????
点评回复

使用道具 举报

发表于 2009-3-20 21:53:18 | 显示全部楼层
[em10][em10][em10]
点评回复

使用道具 举报

发表于 2009-3-22 17:45:57 | 显示全部楼层
gdi_draw_solid_rect(x1, y1, x2, y2, GDI_COLOR_TRANSPARENT);
该函数是把当前层区域刷成成透明色,刷新的时候进行层的合成,透明色就不显示了。
拨号盘显示为白色的原因是因为拨号盘没有WALLPAPER层,他的BASE层是白色的,所以合成之后就变成了白色
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-12-28 20:19 , Processed in 0.051899 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表