0
CustomBitmap *bitmapCtrl1 = new CustomBitmap(mainPanel, bitmap1, id+1, rollover_bitmap1, NULL, wxDefaultPosition, wxSize(125, 125));

CustomBitmap类派生自wxControl. 这是我的 OnPaint 函数。

void CustomBitmap::OnPaint(wxPaintEvent& WXUNUSED(event))
{
    wxPaintDC dc((wxWindow *) this);
    SetTransparent(0);
    
    if (m_enter)
    {
        dc.DrawBitmap(m_bmpmouseover, 0, 0, true);
    }
    else
    {
        if (m_leftdown || m_rightdown){
            dc.DrawBitmap(m_bmpclick, 0, 0, true);
        }
        else {
            dc.DrawBitmap(m_bmpstatic, 0, 0, true); 
        }
    }
#ifdef WX3 
    //dc.EndDrawing();
#else
    // dc.EndDrawing();
#endif
}
4

1 回答 1

1

一般来说,你不能自定义绘制原生控件,它们只是不是为了配合你而设计的。如果您需要圆形按钮,则必须自己绘制它们并处理输入并为它们生成事件。

您可能会发现wxRendererNativewxMouseEventsManager分别对绘图和输入处理有所帮助。

于 2021-01-19T18:23:11.603 回答