gpt4 book ai didi

C++ FLTK 图像重绘

转载 作者:行者123 更新时间:2023-11-30 04:00:05 27 4
gpt4 key购买 nike

我正在制作一个简单的 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();`

画好了。但是当我喜欢这样的时候: enter image description here enter image description here enter image description here

我的形象毁了。我需要调用哪个回调以避免图像损坏?如何正确更新盒子?如何手动从磁盘重新加载图像?

最佳答案

试试这个:(来源: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());
}

关于C++ FLTK 图像重绘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26522022/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com