29、wxWidgets小部件之wxStaticText和wxStaticLine

这篇博客介绍了如何在C++中利用wxWidgets库创建一个名为`TestStaticText`的窗口类,该类包含一个静态文本和一条静态线,并能自定义它们的背景和前景颜色。静态文本可以动态更新其内容,而静态线则通过绘制矩形来改变颜色。此外,文章还展示了如何响应`wxEVT_PAINT`事件来绘制静态线的自定义背景。
摘要由CSDN通过智能技术生成

class TestStaticText:public wxFrame
{
public:
    TestStaticText(const wxString& title);

protected:
    void OnPaint(wxPaintEvent& event);
    int f;

    wxStaticText* st;
    wxStaticLine* sl;
};
 

TestStaticText::TestStaticText(const wxString& title)
    :wxFrame(NULL,-1,title)
{
    SetBackgroundColour(*wxLIGHT_GREY);

    wxString text = wxT("测试文本\n");
    text.Append( wxT("第二行\n"));
    st = new wxStaticText(this,-1,text);
    st->SetForegroundColour(*wxRED);;
    st->SetLabel(st->GetLabel() + "Red text\n");
//    st->SetBackgroundStyle(wxBG_STYLE_PAINT);

    sl = new wxStaticLine(this,-1,wxPoint(-1,-1),wxSize(-1,10));
    wxClientDC dc(sl);
    wxBrush brush1(wxColour(197, 108, 0));
    dc.SetBrush(brush1);
    dc.DrawRectangle(sl->GetClientRect());
    sl->Refresh();


    wxBoxSizer* szMain = new wxBoxSizer(wxVERTICAL);
    szMain->Add(st,0,wxEXPAND|wxALL,10);
    szMain->Add(sl,0,wxEXPAND|wxALL,10);

    SetSizer(szMain);

    f=28;
    Bind(wxEVT_PAINT,wxPaintEventHandler(TestStaticText::OnPaint),this);

    Centre();
}

void TestStaticText::OnPaint(wxPaintEvent& event)
{
    wxPaintDC dc(this);

    wxPen pen(wxColour(212, 212, 212));
    dc.SetPen(pen);

    dc.DrawRectangle(wxRect(140, 150, 100, 100));

    wxBrush brush1(wxColour(197, 108, 0));
    dc.SetBrush(brush1);

    dc.DrawRectangle(wxRect(140, 150, 100, f));

    //给wxStaticLine上色
    wxClientDC dcSL(sl);
    wxBrush brushSL(wxColour(197, 108, 0));
    dcSL.SetBrush(brushSL);
    dcSL.DrawRectangle(sl->GetClientRect());
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值