wxWidgets第九课 wx绘图工具
2017-08-10 09:33
162 查看
画笔画刷说明 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"
空心矩形wxPenvoid CFlightInstrumentPanel::OnPaint( wxPaintEvent& event ){wxClientDC dc(this);wxPen pen(*wxRED,1);dc.SetPen(pen);dc.DrawRectangle(0, 0, 200, 300);dc.SetPen(wxNullPen);}
实心矩形wxBrushvoid 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);}
实例代码:验证说明确实已经进行了渲染并且肉眼可以看见,可以连续渲染多个相邻的点,形成直线。关联鼠标拖动事件OnMotionvoid 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); }}
结论: 为了能够渲染一个足够大的点,可以使用渲染圆形的方式
注意dc.SetBrush(wxNullBrush);dc.SetPen(wxNullPen);上述两行代码能够清除当前设置的画笔和画刷的颜色,避免影响到后续的渲染
代码#include "wx/wx.h"
空心矩形wxPenvoid CFlightInstrumentPanel::OnPaint( wxPaintEvent& event ){wxClientDC dc(this);wxPen pen(*wxRED,1);dc.SetPen(pen);dc.DrawRectangle(0, 0, 200, 300);dc.SetPen(wxNullPen);}
实心矩形wxBrushvoid 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);}
实例代码:验证说明确实已经进行了渲染并且肉眼可以看见,可以连续渲染多个相邻的点,形成直线。关联鼠标拖动事件OnMotionvoid 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); }}
结论: 为了能够渲染一个足够大的点,可以使用渲染圆形的方式
相关文章推荐
- 跨平台 GUI 框架 wxWidgets和UI开发工具 wxFormBuilder
- wxwidgets中关于多个wxMemoryDC作图的情况
- Opencv实现的简易绘图工具
- Ubuntu 14.04 64bit上玩转graphviz绘图工具
- wxWidgets中wxDateTime与wxString的互操作
- UML类图关系(VP-UML工具绘图)
- wxWidgets文件操作(三)wxFileDialog与wxTextCtrl
- 基于Python及Wx的离线Blog发布工具Zoundry Raven
- C# 实现完整功能的截图控件(1)-实现绘图工具栏控件
- 完美解决-关于ubuntu下dia绘图工具中文输入问题
- 网页版的绘图工具
- Photoshop工具与绘图
- 一起来画画!8款最佳HTML5绘图工具
- wxWidgets国际化语言支持-概述,工具
- Ubuntu 下的 Latex 系统架构绘图工具
- (转)C#中最强的绘图工具程序 DrawTools
- 安装python Matplotlib 库绘图工具流程
- [wxWidgets]_[中级]_[自定义wxStaticText控件支持图片背景(透明背景)]
- 基于HTML5 Canvas和jQuery 的绘图工具的实现
- 矢量绘图工具,自动生成CG代码