wxWidgets第十課 渲染字體

說明

    DrawText的缺點:字體的大小以及字體擺放位置需要手動計算,並且字體的寬和高實際上是不能隨意的設置的,在可伸縮的情況下,效果差基於以上的缺點,引入DrawLabel函數


應用

void DrawLabel(const wxString& text, const wxRect& rect,

                   int alignment = wxALIGN_LEFT | wxALIGN_TOP,

                   int indexAccel = -1)

第一個參數是標籤的文本內容

第二個參數是標籤所在的矩形區域

第三個參數是文本的對齊方式,其中包含居中對齊,左對齊等等,詳細見

wxAlignment

    wxALIGN_CENTER_HORIZONTAL = 0x0100,

    wxALIGN_CENTRE_HORIZONTAL = wxALIGN_CENTER_HORIZONTAL,

    wxALIGN_LEFT              = wxALIGN_NOT,

    wxALIGN_TOP               = wxALIGN_NOT,

    wxALIGN_RIGHT             = 0x0200,

    wxALIGN_BOTTOM            = 0x0400,

    wxALIGN_CENTER_VERTICAL   = 0x0800,

    wxALIGN_CENTRE_VERTICAL   = wxALIGN_CENTER_VERTICAL,


該函數在自定義控件中,渲染控件的標題非常有用

例子:控件的標題佔整個控件的百分之30的高度,居中對齊

wxBufferedPaintDC dc(this);

int titleHeight = m_size.GetHeight()*0.3;

wxRect rect(0, 0, m_size.GetWidth(), titleHeight);

dc.DrawLabel(m_szTitle, rect, wxALIGN_CENTER_HORIZONTAL | wxALIGN_TOP);

說明 0,0表示從控件的左上角開始,取控件的寬度爲標籤的矩形寬度,百分之三十的高位矩形的高度



採用DrawText的例子

wxFont titleFont(wxSize(0, titleHeight), wxFONTFAMILY_SCRIPT  , wxNORMAL, wxFONTWEIGHT_LIGHT);

dc.SetFont(titleFont);

dc.DrawText(m_szTitle, 4, 0);

注意wxSize主要是用來設置字體的寬和高,實際上,可以只設置字體的高,來自動確認字體的寬,但是往往效果差,下面提供了一個設置字體大小的方法,同樣的效果差

wxClientDC dc(this);

//定義一個wxFont類的對象font

//構造函數wxFont::wxFont(字體大小、字體類型(書法、藝術)、斜體、)

wxFont font(30,wxFONTFAMILY_ROMAN  ,wxNORMAL,wxBOLD);

//利用DC類的成員函數SetFont設置字體

dc.SetFont(font);

//設置背景透或者不透

dc.SetBackgroundMode(wxSOLID);

//設置前景顏色

dc.SetTextForeground(wxColor(0, 255, 127));

//設置背景顏色

dc.SetTextBackground(wxColor(0, 36, 17));

//寫字,文本wxString,位置wxPoint

dc.DrawText("9", 100, 100);

  


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章