用 wxWidgets 绘图
Drawing with wxWidgets
我正在创建一个用于捕获屏幕或其中一部分的应用程序,为此我需要 select 我想要捕获的屏幕部分。
想法是创建一个全屏半透明 window 并在上面画东西,这样用户就可以看到他在做什么。我有一个工作实现,其中 selected 区域显示为 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
捕捉mouse/keyboard事件,我也想在那里画画,但我不知道怎么做。
我想要半透明的黑色背景,selected 区域应该是透明的白色甚至完全透明(没有黑色背景)。
每次尝试的结果要么是它绘制纯色背景,要么我得到了著名的 WinXP lag effect。
你能给我一个使用 selected 区域的 x, y, with, height
的基本 OnPaintPanel(wxPaintEvent &event)
实现吗(如果你更习惯的话,也可以在 wxPython 中)?
您需要使用 SetTransparent(),wxDC
无论如何都不支持使用 alpha 透明度(wxGraphicsContext
支持,但在这里无济于事)。
我正在创建一个用于捕获屏幕或其中一部分的应用程序,为此我需要 select 我想要捕获的屏幕部分。
想法是创建一个全屏半透明 window 并在上面画东西,这样用户就可以看到他在做什么。我有一个工作实现,其中 selected 区域显示为 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
捕捉mouse/keyboard事件,我也想在那里画画,但我不知道怎么做。
我想要半透明的黑色背景,selected 区域应该是透明的白色甚至完全透明(没有黑色背景)。
每次尝试的结果要么是它绘制纯色背景,要么我得到了著名的 WinXP lag effect。
你能给我一个使用 selected 区域的 x, y, with, height
的基本 OnPaintPanel(wxPaintEvent &event)
实现吗(如果你更习惯的话,也可以在 wxPython 中)?
您需要使用 SetTransparent(),wxDC
无论如何都不支持使用 alpha 透明度(wxGraphicsContext
支持,但在这里无济于事)。