You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FLTK主窗口完全透明背景实现后,移动窗口出现旧内容残留的问题求助

FLTK主窗口完全透明背景实现后,移动窗口出现旧内容残留的问题求助

正如标题所说,我想要实现FLTK主窗口/框架背景完全透明的效果。下面这段代码一开始运行是正常的:

#include <Windows.h>
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_PNG_Image.H>
#include <FL/FL_Box.H>

// Global pointers for the GUI objects
Fl_Window* mywindow;
Fl_Box* mypicturebox;
Fl_PNG_Image* img;

//int main() {
int WINAPI WinMain(HINSTANCE hThisInst, HINSTANCE hPrevInst, LPSTR str, int nWinMode) {

    mywindow = new Fl_Window(295, 290, "Color changer");
    mywindow->color(FL_WHITE);

    // Load some images to use later
    img = new Fl_PNG_Image("D:/Pobrane_2/flower.png");

    // A box for the image
    mypicturebox = new Fl_Box(0, 0, 295, 290);

    // Give it some initial contents
    mypicturebox->image(img);

    mywindow->box(FL_NO_BOX);

    Fl_Button but(50, 80, 100, 20, "Click Me!");
    but.callback([](Fl_Widget* w, void*) {
        Fl_Widget* p = w->parent();
        mywindow->box(FL_FLAT_BOX);
        mywindow->box(FL_NO_BOX);
        mywindow->set_changed();
        mywindow->redraw();
        p->redraw();
        });

    mywindow->show();
    return Fl::run();
}

一开始窗口显示正常,透明背景能正确呈现后方内容,但一旦移动窗口,问题就来了:透明背景里残留着移动前的旧画面,就像窗口没完成重新刷新一样,只保留了创建时的背景内容。

我特意加了个按钮,在点击事件里写了强制刷新的代码,但就算执行了这些逻辑,问题还是没解决!

有没有大佬知道怎么修改代码,才能让窗口移动后,透明背景里的内容能正确更新成当前窗口后方的实时画面啊?

备注:内容来源于stack exchange,提问作者AlmondPudding

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 10:10:31