0
투명 wxTextCtrl :wxWidgets에 나는 다음과 같이 자신을 그것에서 운전하고 텍스트를 그려 <code>wxTextCtrl</code> 사용자 정의 투명을 만들려고 해요
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
OnPaint 함수에서 이벤트를 바로 멈추는 것처럼 보이는 것처럼 TextLayer 클래스에서 evt.Skip()을 호출하십시오. – macroland