首页 > 解决方案 > 更改框内图像的问题 FLTK

问题描述

我在 Fl_Box 中更改图像(Fl_PNG_image 大小 25x25[在此处输入图像描述][1])时遇到问题。

所以这里是改变盒子的代码部分:

        if(strcmp(payload, "heat")==0) tryb_pracy_box->image(grzanie_png);
        if(strcmp(payload, "cool")==0) tryb_pracy_box->image(chlodzenie_png);
        tryb_pracy_box->redraw();

然后我也有一个 Fl::check();

但是当我尝试更改图像时,结果如下所示:[1][1]: https://i.stack.imgur.com/xb7by.png

据我了解,图像“出现”在标签上,但是当我尝试使用不同的对齐方式时,它没有帮助。

这是我正在使用的图像 [2][2]:https://i.stack.imgur.com/h0GVz.png [3][3]:https://i.stack.imgur.com/ OS2bC.png

提前致谢!

标签: c++fltk

解决方案


这里描述的这种效果通常是由“无背景”的小部件引起的,即框类型 FL_NO_BOX 或 FL_*_FRAME 类型之一。如果您更改图像或标签(假设它们在框内),则更改的标签/图像会覆盖现有标签。在这种情况下,您有两种选择:

  1. 重绘父小部件,更改tryb_pracy_box->redraw();tryb_pracy_box->parent()->redraw();
  2. 将框类型更改为具有纯色背景的框类型,例如 FL_FLAT_BOX。

如果标签(和图像)在小部件之外,则在更改标签时绝对有必要绘制父小部件。


推荐阅读