了解 FLTK 中的小部件损坏

问题描述

由于对fltk内置的Scroll group的样式不满意,想自己创建一个scroll group组件,功能类似。阅读 FL_Scroll 的源代码,我 收集到“屏蔽”滚动组儿童不需要的部分的过程涉及使用 fltk 的损坏功能。我发现小部件损坏是一个难以理解的概念。这似乎与小部件的绘制方式有关,但我不明白如何使用它来选择性地绘制小部件的一部分。

根据 WidgetExt::set_damage()WidgetExt::damage()fltk-rs docs,损坏似乎是某种开/关状态,例如 set_resizeable()

然而在 FLTK docs 中我看到了这个定义:

When redrawing your widgets you should look at the damage bits to see what parts of your widget need redrawing. 
The handle() method can then set individual damage bits to limit the amount of drawing that needs to be done:
MyClass::handle(int event) {
    ...
    if (change_to_part1) damage(1);
    if (change_to_part2) damage(2);
    if (change_to_part3) damage(4);
  }
  
  MyClass::draw() {
    if (damage() & fltk::damAGE_ALL) {
      ... draw frame/Box and other static stuff ...
    }
    if (damage() & (fltk::damAGE_ALL | 1)) draw_part1();
    if (damage() & (fltk::damAGE_ALL | 2)) draw_part2();
    if (damage() & (fltk::damAGE_ALL | 4)) draw_part3();
  }

这个描述让人觉得小部件损坏是指关于小部件的某种字节数据数组。我在猜测滚动组, 您只想在滚动组区域内绘制字节数据。但是这个字节数据存储在哪里呢?如何访问它?损坏与这些数据有什么关系?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)