【问题标题】:FLTK filled polygonFLTK 填充多边形
【发布时间】:2014-02-03 18:23:16
【问题描述】:

我正在使用FLTK 创建一个 GUI,我必须在屏幕上绘制一些多边形(形状)。

来自他们的 fl_complex_polygon 文档:

Start and end drawing a convex filled polygon.

问题?多边形未填充,仅显示笔划。如何使多边形成为填充形状?

我的代码如下所示:

fl_color(FL_RED);
fl_begin_complex_polygon();
fl_line(mX,mY, x, y);
....
fl_line(mX,mY, x, y);
fl_end_complex_polygon();

其他相关问题:如何重绘FL_BOX?我是否必须在其上绘制一个空白(背景色)矩形,还是有一些 FL_BOX::clear() 函数?

【问题讨论】:

    标签: c++ oop user-interface fltk


    【解决方案1】:

    Re:填充的多边形。多边形由顶点组成:不是由线组成。它不知道线。使用 fl_vertex 而不是 fl_line。

    回复:fl_box 有两个 fl_box,视情况而定。

    fl_box 设置盒子类型 Fl_Box.H 中的 Fl_Box 绘制一个框。如果损坏,重绘代码将自动重绘。假设小部件被称为框。调用 box->damage(FL_USER1) 强制重绘。

    更多技巧,请看http://seriss.com/people/erco/fltk/

    【讨论】:

    • 谢谢你,多边形的作品。如果我use this->damage() 它只会绘制我的函数内部的内容,而不是标签或其他默认的方框图。不可能也触发 Fl_Box 重绘,例如绘制标签。如果我在损坏之前或之后添加Fl_Box::draw(),那么图纸将堆叠。
    • 伤害只是设置了一个标志。它只会在重绘循环中被重绘。那就是停止闪烁。如果你强制平局,那么你可能会得到一些闪烁。您希望重绘的标签是否属于 Fl_Box?如果他们不这样做,那么您需要在标签的父级上设置损坏。
    • 好的,我就是这样做的:我使用了Fl_Box::draw()。问题是盒子的样式是空白背景,所以下次绘制它时没有什么可以覆盖旧图纸的宽度。解决方法是设置框样式。 fltk.org/doc-1.1/common.html#boxtypes
    • 盒子类型应该在创建盒子时设置:在绘制之前。
    • 是的,我就是这么做的。默认情况下,盒子类型是透明的。不得不将 FLTK 用于大学项目。 i.snag.gy/e3pUV.jpg:D