0
我試圖通過從駕駛和繪製文本自己如下創建一個自定義透明wxTextCtrl
:wxWidgets的透明wxTextCtrl
BEGIN_EVENT_TABLE(TextLayer, wxTextCtrl)
EVT_PAINT(TextLayer::OnPaint)
EVT_ERASE_BACKGROUND(TextLayer::OnEraseBackground)
END_EVENT_TABLE()
void TextLayer::OnEraseBackground(wxEraseEvent& event) {}
void TextLayer::OnPaint(wxPaintEvent & evt)
{
wxAutoBufferedPaintDC dc(this);
PrepareDC(dc);
wxGraphicsContext *gc = wxGraphicsContext::Create(dc);
if(gc)
{
dc.SetFont(GetFont());
dc.SetTextForeground(GetForegroundColour());
auto a = GetValue();
dc.DrawText(GetValue(), 0, 0);
delete gc;
}
}
,但它不工作,它不是透明的,我應該如何做得對嗎?
您最好創建某種透明面板,給它一個焦點,然後捕獲EVT_KEY_DOWN/EVT_PAINT事件。原因是 - 我不瘦,你可以重寫本地控制繪畫。 – Igor
在TextLayer類中調用evt.Skip(),因爲它似乎是在OnPaint函數中停止事件。 – macroland