neilxiang 发表于 2010-9-1 08:34:31

RTGUI 按钮 rtgui_button_set_unpressed_image 和 rtgui_button_set_pressed_image

RTGUI 按钮 rtgui_button_set_unpressed_image 和 rtgui_button_set_pressed_image问题请教!

上位机模拟的测试代码部分

        calender_button=rtgui_button_create("日历");
        rtgui_widget_set_rect(RTGUI_WIDGET(calender_button),&tmp_rect);
        rtgui_container_add_child(RTGUI_CONTAINER(test_view),RTGUI_WIDGET(calender_button));
       
       
        image_pressed=rtgui_image_create_from_file("png","d:\\grin.png",RT_TRUE);
        if(image_pressed!=RT_NULL)
            rtgui_button_set_pressed_image(calender_button,image_pressed);

        image_unpressed=rtgui_image_create_from_file("png","d:\\glasses.png",RT_TRUE);
         if(image_unpressed!=RT_NULL)
          rtgui_button_set_unpressed_image(calender_button,image_unpressed);
问题:
      设置了按纽按下和非按下的图像之后,测试图片:一幅图像为笑脸grin.png,另一符为戴眼镜头像glasses.png,
      当点击按钮之后,笑脸图像本没有眼镜,但是出现了眼镜(为眼镜头像部分的眼镜),即出现了未点击之前按钮
      的部分图像(有部分重叠)!反复点按钮都是相同的现象!

RTGUI初始画面:
http://cache.amobbs.com/bbs_upload782111/files_32/ourdev_579302.JPG
(原文件名:RTGUI初始画面.JPG)
RTGUI二级视图鼠标按下画面
http://cache.amobbs.com/bbs_upload782111/files_32/ourdev_579303.JPG
(原文件名:RTGUI二级视图鼠标按下画面.JPG)
RTGUI二级视图鼠标未按下画面
http://cache.amobbs.com/bbs_upload782111/files_32/ourdev_579304.JPG
(原文件名:RTGUI二级视图鼠标未按下画面.JPG)


      
       问题2:RTGUI二级视图鼠标按下画面和未按下画面都可以看到RTGUI初始画面中相同位置的按钮系统信息按钮也显示出来了,本来应该是没有的!
            测试发现,只要设置了按钮的图片,那么显示之时如果后面原来有控件存在,就会重叠与图片之后!

       问题3:"d:\\grin.png",测试之时发现,用双斜杠才成功,否则返回的image_pressed为RT_NULL!

ffxz 发表于 2010-9-1 10:35:18

你用了png图片,这个是带透明色的,所以在透明的地方会重叠。可能加一个按钮全部重新擦除会比较好些。

路径的问题,
在C中,"\"做为转义作用,所以只有加"\\"。

ffxz 发表于 2010-9-1 10:44:15

能否类似GUI examples那样给一个完整的可编译可执行的文件,这样我也可以调试下这部分,多谢。

neilxiang 发表于 2010-9-1 10:47:47

回复【1楼】ffxz
-----------------------------------------------------------------------

回复【1楼】ffxz
你用了png图片,这个是带透明色的,所以在透明的地方会重叠。可能加一个按钮全部重新擦除会比较好些。
路径的问题,
-----------------------------------------------------------------------

如何加一个按钮全部重新擦除呢?GUI对应哪个API呢?原来的视图全部隐藏不可见,我测试了rtgui_view_hide(main_view);

main_view是以前的视图!结果还是一样的!

ffxz 发表于 2010-9-1 10:54:58

button的绘图是在rtgui_theme.c文件中,全部重新擦除
rtgui_dc_fill_rect(xxx)

这样就可以了

neilxiang 发表于 2010-9-3 08:35:38

回复【2楼】ffxz
-----------------------------------------------------------------------
图片用Jpg格式的就没有这个问题了!

ffxz 发表于 2010-9-3 12:25:00

回复【5楼】neilxiang
图片用jpg格式的就没有这个问题了!

-----------------------------------------------------------------------

:-) 你这是把问题给绕过去了,本想把这个问题给解决得呢

爱学习的妞 发表于 2012-10-10 16:49:27

楼主的图片“d:\\grin.png”是存放在哪的呢?
页: [1]
查看完整版本: RTGUI 按钮 rtgui_button_set_unpressed_image 和 rtgui_button_set_pressed_image