Python wxPython DC绘图详解:画笔、笔刷与图形绘制

落日邮差
落日邮差
发布时间:2026-10-15| 4人浏览过
原创

本文详解Python中wxPython库的DC绘图机制。通过Device Context对象实现GDI功能,深入讲解dc.SetPen设置画笔颜色、宽度与样式,以及dc.SetBrush配置填充图案的方法。结合矩形绘制示例,列举标准颜色库、线条样式及多种图形绘制命令,帮助开发者掌握基础图形界面绘制技巧。

wxPython DC绘图基础

在Windows系统中,应用程序与图形设备之间的交互通常由图形设备接口(Graphics Device Interface, GDI)负责处理。在wxPython框架中,这一功能通过设备上下文(Device Context, DC)对象来实现,它是进行图形绘制的基础。

创建DC对象十分便捷,只需引入wx.PaintDC即可。随后,利用该dc对象可以配置画笔dc.SetPen。拥有画笔后,即可开始图形绘制工作。进一步考虑图形的视觉属性,包括形状、颜色及边框等细节,具体而言涉及图形形状、填充颜色、边框类型以及边框颜色。

以下通过一个矩形绘制的实例进行说明:

上述窗口界面由以下代码实现。


import wx
class Example(wx.Frame):
    def __init__(self, parent,title):
        super(Example,self).__init__(parent,title=title,size=(350,280))
        self.Bind(wx.EVT_PAINT, self.OnShowColour)
        self.Center()   #居中
        self.Show()     #显示
    def OnShowColour(self,evt):
        dc = wx.PaintDC(self)
        dc.SetPen(wx.Pen('#d4d4d4'))    #设置画笔颜色
        dc.SetBrush(wx.Brush('#c56c00'))#设置填充颜色
        dc.DrawRectangle(10,15,90,60)   #绘制矩形
        dc.SetBrush(wx.Brush('#1ac500'))
        dc.DrawRectangle(130,15,90,60)
        dc.SetBrush(wx.Brush('#539e47'))
        dc.DrawRectangle(250,15,90,60)
        dc.SetBrush(wx.Brush('#004fc5'))
        dc.DrawRectangle(10,105,90,60)
def test():
    app = wx.App()		#创建App对象
    Example(None,'Rect')#创建绘图窗口
    app.MainLoop()
if __name__ == "__main__":
    test()

画笔设置:颜色与样式

首先,使用dc.SetPen()来配置画笔属性。wx.Pen('#d4d4d4')的标准调用格式为wx.Pen(wx.Colour,width,style),其中width参数代表画笔宽度,'#d4d4d4'是Colour类的一种表示方式,由红、绿、蓝三组十六进制数值组合而成,从而定义画笔颜色。除了使用字符串表示外,还可以引用标准颜色库或通过调用wx.Colour()来定义颜色。

例如,wx.Colour(255,0,0)、'Red'以及'#FF0000'均表示红色。标准颜色库如表所示:

AQUAMARINE BLACK BLUE BLUE VIOLET BROWN
CADET BLUE CORAL CORNFLOWER BLUE CYAN DARK GREY
DARK GREEN DARK OLIVE GREEN DARK ORCHID DARK SLATE BLUE DARK SLATE GREY
DARK TURQUOISE DIM GREY FIREBRICK FOREST GREEN GOLD
GOLDENROD GREY GREEN GREEN YELLOW INDIAN RED
KHAKI LIGHT BLUE LIGHT GREY LIGHT STEEL BLUE LIME GREEN
MAGENTA MAROON MEDIUM AQUAMARINE MEDIUM BLUE MEDIUM FOREST GREEN
MEDIUM GOLDENROD MEDIUM ORCHID MEDIUM SEA GREEN MEDIUM SLATE BLUE MEDIUM SPRING GREEN
MEDIUM TURQUOISE MEDIUM VIOLET RED MIDNIGHT BLUE NAVY ORANGE
ORANGE RED ORCHID PALE GREEN PINK PLUM
PURPLE RED SALMON SEA GREEN SIENNA
SKY BLUE SLATE BLUE SPRING GREEN STEEL BLUE TAN
THISTLE TURQUOISE VIOLET VIOLET RED WHEAT
WHITE YELLOW YELLOW GREEN

除了颜色之外,SetPen方法还可以定义其他属性,例如画笔的样式:

wx.SOLID:实线

wx.DOT:点线

wx.LONG_DASH:长横线

wx.SHORT_DASH:短横线

wx.DOT_DASH:点横线

wx.TRANSPARENT:无边框

笔刷填充与图形绘制

dc.SetBrush用于设置笔刷,即图形内部的填充效果。除了使用wx.Colour()外,其style属性还包括以下类型:

wx.SOLID:实心填充

wx.BDIAGONAL_HATCH:右斜纹wx.

CROSSDIAG_HATCH:左斜纹wx.

FDIAGONAL_HATCH:斜交叉纹wx.

CROSS_HATCH:横竖交叉纹

wx.HORIZONTAL_HATCH:横纹

wx.VERTICAL_HATCH:纵纹

wx.TRANSPARENT:无填充

dc.DrawRectangle是矩形绘制命令,其四个参数分别对应左上角点的坐标以及矩形的长和宽。除了矩形之外,wxPython还提供了多种其他图形,如表所示:

函数 图形 参数备注
dc.DrawEllipse(x, y, width, height) 椭圆
dc.DrawRoundedRectangle(x, y, width, height, radius) 圆角矩形 radius为圆角半径
dc.DrawArc(xStart, yStart, xEnd, yEnd, xc, yc) 圆弧 xc,yc为圆心
dc.DrawPolygon(points) 多边形 输入为点集
dc.DrawRectangle(x, y, width, height) 矩形
dc.DrawSpline(points) 曲线 输入为点集
dc.DrawLines(points) 折线 输入为点集
dc.DrawCircle(x, y, radius) 圆

以上就是Python光学仿真wxpython之DC绘图的详细内容,更多关于wxpython之DC绘图的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。