我正在制作一个简单的FLTK应用程序(在linux中),需要在FL_Window中显示PNG图像。下一个代码:
Fl_PNG_Image* pngImg;
Fl_Box* boxImage;
boxImage = new Fl_Box(500, 470, 0, 0);
pngImg = new Fl_PNG_Image("main.png");
boxImage->image(pngImg);
boxImage->redraw();`
画好了。但是当我喜欢这个时:
我的形象破坏了。我需要调用哪个回调以避免图像破坏?如何正确更新框?如何从磁盘manuualy重新加载图像?
答案 0 :(得分:2)
试试这个:(来源:http://osdir.com/ml/lib.fltk.general/2004-07/msg00396.html)
注意:由于我无法重新创建您的错误,我不确定它是否会解决它但似乎有理由认为无论出于何种原因您的主窗口都不应该被重绘。
对父窗口进行子类化并让它手动重绘其内容并轻推FLTK,以便在移动时尽快使用Fl :: check(),以便你有类似的东西
class Mywin : public Fl_Window {
void resize(int X, int Y, int W, int H) {
Fl_Window::resize(X,Y,W,H);
redraw();
Fl::check();
}
public:
Mywin(int x,int y,int w, int h) : Fl_Window(x,y,w,h) {
}
};
int main() {
Mywin* win = new Mywin(20,20,800,800);
Fl_Box* box = new Fl_Box(100,100,300,200);//for example
Fl_PNG_Image* pngImg = new Fl_PNG_Image("main.png");
box->image(pngImg);
box->show();
win->end();
win->show();
return (Fl::run());
}