wxWidgets第九课wx绘图工具-创新互联
画笔画刷说明
创新互联专注于上犹企业网站建设,响应式网站,购物商城网站建设。上犹网站建设公司,为上犹等地区提供建站服务。全流程定制网站设计,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务wxPen作为画笔渲染轮廓线,wxBrush作为画刷渲染图形的填充颜色。当画笔和画刷同时使用的情况下,可以渲染轮廓颜色和填充颜色不一样的图形。wxPen构造函数的第一个参数是颜色,第二个参数是画笔的厚度。wx针对画笔和画刷提供了许多常见的颜色宏定义,避免了需要手动设置RGB分量的情况,大大减轻开发者的负担。例如画笔颜色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)));
现有例子
wxBufferedPaintDC dc(this);
dc.SetBrush(*wxWHITE_BRUSH);
注意
dc.SetBrush(wxNullBrush);
dc.SetPen(wxNullPen);
上述两行代码能够清除当前设置的画笔和画刷的颜色,避免影响到后续的渲染
代码
#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);透明画刷来实现,渲染空心轮廓线
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渲染椭圆,该椭圆内切于矩形,当width等于height的时候,渲染圆形,
第一和第二参数是矩形的左上角的X轴和Y轴坐标,第三和第四参数是矩形
的长和宽
DrawPoint 渲染点说明
渲染点使用画笔wxPen,因此认为渲染点的尺寸大小能够通过修改画笔的宽度来修改,实际上渲染点的尺寸大小始终是1个像素点,所以会造
成以下的现象:仅仅渲染一个点,在屏幕上是无法通过肉眼看到的
实例代码:关联渲染事件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);
}
实例代码:验证说明确实已经进行了渲染并且肉眼可以看见,可以连续渲染多个相邻的点,形成直线。关联鼠标拖动事件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);
}
}
结论:
为了能够渲染一个足够大的点,可以使用渲染圆形的方式
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
当前标题:wxWidgets第九课wx绘图工具-创新互联
分享网址:http://hbruida.cn/article/dhesih.html