畫筆畫刷說明
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設,豐潤企業(yè)網(wǎng)站建設,豐潤品牌網(wǎng)站建設,網(wǎng)站定制,豐潤網(wǎng)站建設報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,豐潤網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
wxPen作為畫筆渲染輪廓線,wxBrush作為畫刷渲染圖形的填充顏色。當畫筆和畫刷同時使用的情況下,可以渲染輪廓顏色和填充顏色不一樣的圖形。wxPen構(gòu)造函數(shù)的第一個參數(shù)是顏色,第二個參數(shù)是畫筆的厚度。wx針對畫筆和畫刷提供了許多常見的顏色宏定義,避免了需要手動設置RGB分量的情況,大大減輕開發(fā)者的負擔。例如畫筆顏色wxBLACK_PEN wxGREEN_PEN wxWHITE_PEN wxBLUE_PEN等,畫刷顏色wxBLACK_BRUSH wxGREEN_BRUSH wxWHITE_BRUSH wxBLUE_BRUSH等
已有例子
wxBufferedPaintDC dc(this);
dc.SetBrush(wxBrush(wxColour(255, 255, 255)));
現(xiàn)有例子
wxBufferedPaintDC dc(this);
dc.SetBrush(*wxWHITE_BRUSH);
注意
dc.SetBrush(wxNullBrush);
dc.SetPen(wxNullPen);
上述兩行代碼能夠清除當前設置的畫筆和畫刷的顏色,避免影響到后續(xù)的渲染
代碼
#include "wx/wx.h"
空心矩形wxPen
void CFlightInstrumentPanel::OnPaint( wxPaintEvent& event )
{
wxClientDC dc(this);
wxPen pen(*wxRED,1);
dc.SetPen(pen);
dc.DrawRectangle(0, 0, 200, 300);
dc.SetPen(wxNullPen);
}
實心矩形wxBrush
void CFlightInstrumentPanel::OnPaint( wxPaintEvent& event )
{
wxClientDC dc(this);
wxColor strokeColor(0, 255, 255, 255);
wxColor fillColor(0, 0, 255, 255);
wxBrush brush(fillColor);
wxPen pen(strokeColor);
dc.SetPen(pen);
dc.SetBrush(brush);
dc.DrawRectangle(0, 0, 200, 300);
dc.SetBrush(wxNullBrush);
dc.SetPen(wxNullPen);
}
可以設置dc.SetBrush(*wxTRANSPARENT_BRUSH);透明畫刷來實現(xiàn),渲染空心輪廓線
DrawEllipse 渲染橢圓說明
#include "wx/dcclient.h"
wxPaintDC dc(this);
wxColor color(15, 57, 121);
wxBrush brush(color);
dc.SetBrush(brush);
dc.DrawEllipse(0, 0, width, height);
dc.SetBrush(wxNullBrush);
DrawEllipse渲染橢圓,該橢圓內(nèi)切于矩形,當width等于height的時候,渲染圓形,
第一和第二參數(shù)是矩形的左上角的X軸和Y軸坐標,第三和第四參數(shù)是矩形
的長和寬
DrawPoint 渲染點說明
渲染點使用畫筆wxPen,因此認為渲染點的尺寸大小能夠通過修改畫筆的寬度來修改,實際上渲染點的尺寸大小始終是1個像素點,所以會造
成以下的現(xiàn)象:僅僅渲染一個點,在屏幕上是無法通過肉眼看到的
實例代碼:關聯(lián)渲染事件OnPaint,在屏幕上(100,100)位置渲染點
void CFlightInstrumentPanel::OnPaint( wxPaintEvent& event )
{
wxClientDC dc(this);
wxPen pen(*wxBLACK, 5);
dc.SetPen(pen);
dc.DrawPoint(100, 100);
dc.SetPen(wxNullPen);
}
實例代碼:驗證說明確實已經(jīng)進行了渲染并且肉眼可以看見,可以連續(xù)渲染多個相鄰的點,形成直線。關聯(lián)鼠標拖動事件OnMotion
void CFlightInstrumentPanel::OnMotion( wxMouseEvent& event )
{
if ( event.Dragging())
{
wxClientDC dc(this);
wxPen pen(*wxBLACK, 5);
dc.SetPen(pen);
int x = event.GetPosition().x;
int y = event.GetPosition().y;
dc.DrawPoint(x, y);
dc.SetPen(wxNullPen);
}
}
結(jié)論:
為了能夠渲染一個足夠大的點,可以使用渲染圓形的方式