在 FLTK 框内更改图像的问题
Problem with changing image inside the box 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
提前致谢!
我发现直接使用 subclass Fl_Box 并实现(覆盖)draw 方法更容易。在其中你可以调用 fl_draw_image(…) 和 fl_draw(const char *, …)。这允许您在图像上准确指定文本的坐标,而无需调整相对于图像的对齐方式。您可以在 class 中存储图像指针并更改它指向的内容。
此处描述的此类效果通常是由具有“无背景”的小部件引起的,即方框类型 FL_NO_BOX 或 FL_*_FRAME 类型之一。如果您更改图像或标签(假设它们在框内),则更改后的 label/image 会覆盖现有标签。在这种情况下,您有两种选择:
- 重绘父控件,将
tryb_pracy_box->redraw();
更改为tryb_pracy_box->parent()->redraw();
- 将方框类型更改为纯色背景,例如FL_FLAT_BOX.
如果标签(和图像)在小部件之外,则在更改标签时绝对有必要绘制父小部件。
我在 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
提前致谢!
我发现直接使用 subclass Fl_Box 并实现(覆盖)draw 方法更容易。在其中你可以调用 fl_draw_image(…) 和 fl_draw(const char *, …)。这允许您在图像上准确指定文本的坐标,而无需调整相对于图像的对齐方式。您可以在 class 中存储图像指针并更改它指向的内容。
此处描述的此类效果通常是由具有“无背景”的小部件引起的,即方框类型 FL_NO_BOX 或 FL_*_FRAME 类型之一。如果您更改图像或标签(假设它们在框内),则更改后的 label/image 会覆盖现有标签。在这种情况下,您有两种选择:
- 重绘父控件,将
tryb_pracy_box->redraw();
更改为tryb_pracy_box->parent()->redraw();
- 将方框类型更改为纯色背景,例如FL_FLAT_BOX.
如果标签(和图像)在小部件之外,则在更改标签时绝对有必要绘制父小部件。