【问题标题】:Drawing with wxWidgets使用 wxWidgets 绘图
【发布时间】:2015-09-18 21:32:09
【问题描述】:

我正在创建一个用于捕获屏幕或其一部分的应用程序,为此我需要选择我想要捕获的屏幕部分。

这个想法是创建一个全屏半透明窗口并在其上绘制东西,以便用户可以看到他在做什么。我有一个工作实现,其中选定区域显示为 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 lag effect

你能给我一个使用所选区域的x, y, with, height 的基本OnPaintPanel(wxPaintEvent &event) 实现吗(也可以在 wxPython 中,如果你更习惯的话)?

【问题讨论】:

    标签: c++ wxpython wxwidgets


    【解决方案1】:

    您需要使用SetTransparent()wxDC 无论如何都不支持使用 alpha 透明度(wxGraphicsContext 可以,但在这里没有帮助)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-17
      • 2010-12-27
      • 1970-01-01
      • 2014-08-30
      • 2014-08-16
      • 1970-01-01
      相关资源
      最近更新 更多