使用wxWidgets绘图
Drawing with wxWidgets
我正在创建一个用于捕获屏幕或屏幕的一部分的应用程序,为此我需要选择我要捕获的屏幕的一部分。
这个想法是创建一个全屏半透明的窗口,并在上面画东西,这样用户就可以看到他在做什么。我有一个工作实现,其中所选区域显示为wxPanel,但我想重写它,以手动将所有内容绘制到主wxPanel。
frame = new wxFrame(NULL, -1, "", wxPoint(0,0), wxSize(0,0), wxSTAY_ON_TOP|wxFRAME_NO_TASKBAR|wxFRAME_SHAPED);
panel = new wxPanel(frame, -1);
SetTopWindow( frame );
panel->Bind(wxEVT_KEY_DOWN, &wxMiniApp::OnKeyDown, this);
panel->Bind(wxEVT_KEY_UP, &wxMiniApp::OnKeyUp, this);
panel->Bind(wxEVT_LEFT_DOWN, &wxMiniApp::OnMouseStart, this);
panel->Bind(wxEVT_LEFT_UP, &wxMiniApp::OnMouseEnd, this);
panel->Bind(wxEVT_MOTION, &wxMiniApp::OnMouseMove, this);
panel->Bind(wxEVT_PAINT, &wxMiniApp::OnPaintPanel, this);
panel->SetFocus();
panel->SetBackgroundColour(wxColor(0,0,0,100));
panel->SetBackgroundStyle(wxBG_STYLE_PAINT);
frame->SetBackgroundColour(wxColor(0,0,0,0));
frame->Show();
frame->ShowFullScreen(true);
我使用panel
来捕获鼠标/键盘事件,我也想在那里做绘画,但我不知道怎么做。
我想要半透明的黑色背景,选择的区域应该是透明的白色,甚至是全透明的(没有黑色背景)。
每次尝试的结果都是,要么它画了一个纯色背景,要么我得到了著名的WinXP延迟效果。
你能给我一个基本的OnPaintPanel(wxPaintEvent &event)
实现使用x, y, with, height
的选定区域(也可以在wxPython,如果你更适应它)?
你需要使用SetTransparent(), wxDC
不支持使用alpha透明度无论如何(wxGraphicsContext
,但它不会帮助这里)。
相关文章:
- 什么是事件表 (wxWidgets)?
- 无法编译wxWidgets Hello World
- CMake WxWidgets项目成功地在Linux上构建,但没有在Windows上构建
- 内存所有位置 wxWidgets
- С++ wxWidgets:代码架构,设计原则和模式
- 将 Win32/WinAPI 应用程序移植到 wxWidgets
- 从 wxWidgets 中的.DLL加载图标
- 使用 Visual Studio 2019 构建 Hello World wxwidgets 应用程序时出错
- C++ wxWidgets:在创建小部件后设置字体
- C++ wxWidgets:更改大小器的字体
- meson-build:wxWidgets 资源文件,用于 Windows 未构建
- Visual Studio中的wxwidgets应用程序给出错误"LNK2019 unresolved external symbol"
- 如何在 wxWidgets 中使用 SetTabBehavior 进行C++?
- 在 wxWidgets 中的 wxTextCtrl 上手动触发 ENTER 键按下事件C++?
- 如何从代码本身向 wxwidgets 中的文本控件插入字符?
- wxWidgets 3.1.3 图标在 mac 下加载 - ICNS 文件不可读?
- Wxwidgets - 如何添加调整大小事件处理程序以使"X"绘图随窗口调整大小?
- 如何在使用 WxWidgets 从串行端口读取时不断更新我的面板绘图
- 绘图 *.ICO文件在WXWIDGETS上
- 使用wxWidgets绘图