FLTK 闪烁动画

问题描述

我正在尝试使用 FLTK(半径增加和减少的圆)制作一个简单的动画。我设法编写了一个看似有效的简单程序,但动画闪烁。圆圈消失了几毫秒,然后又回来了。我已将 Fl_Window 类更改为 Fl_Double_Window,但这并没有解决这个问题。

class Painting : public Fl_Widget {

public:
    Painting(int x,int y,int w,int h) : Fl_Widget(x,y,w,h,0) {}
private:

    void draw()
    {
        static double inc = 0;
        inc += 0.2;

        double radius = 50 + 10*sin(inc);
        fl_begin_polygon();
        fl_arc(100,100,radius,360);
        fl_end_polygon();
    }
};

void redraw_cb(void *data)
{
    Fl_Widget *w = (Fl_Widget*)data;
    w->redraw();
    Fl::repeat_timeout(0.01,redraw_cb,data);
}

int main(int argc,char **argv)
{
    Fl_Double_Window *win = new Fl_Double_Window(1000,500,"hello");
    Painting *painting = new Painting(0,1000,500);
    Fl::add_timeout(1,painting);
    Fl::visual(FL_DOUBLE|FL_INDEX);
    win->resizable(painting);
    win->end();
    win->show();
    return Fl::run();
}

解决方法

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

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

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