Python光学仿真wxpython之DC绘图

 更新时间:2021年10月19日 14:25:45   作者:微小冷  
这篇文章主要为大家介绍了Python光学仿真wxpython之DC绘图的基本概念及用法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助

一般来说,系统与绘图程序之间的信息交换是由图形设备接口(Graphics Device Interface,GDI)实现的,在wxpython中,通过device context(DC)对象来实现GDI的功能。

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实现多进程之间共享变量

    Python实现多进程之间共享变量

    Python多线程和多进程之间共享变量的方法有所不同,多线程可以直接使用global变量,而多进程则需要使用multiprocessing库中的Value、Array、Queue等或Manager模块,Pool进程池中进程间共享变量时,必须使用Manager模块,在共享list时,不能直接赋值
    2024-11-11
  • 详解Python各大聊天系统的屏蔽脏话功能原理

    详解Python各大聊天系统的屏蔽脏话功能原理

    这篇文章主要介绍了详解Python各大聊天系统的屏蔽脏话功能原理,小编觉得挺不错的,现在分享给大家,也给大家做个参考。
    2016-12-12
  • TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现

    TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现

    今天小编就为大家分享一篇TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • jupyter 中文乱码设置编码格式 避免控制台输出的解决

    jupyter 中文乱码设置编码格式 避免控制台输出的解决

    这篇文章主要介绍了jupyter 中文乱码设置编码格式 避免控制台输出的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Python中连通域分割Two-Pass算法的原理与实现详解

    Python中连通域分割Two-Pass算法的原理与实现详解

    两遍扫描法( Two-Pass ),正如其名,指的就是通过扫描两遍图像,将图像中存在的所有连通域找出并标记,本文将详细介绍Two-Pass算法的原理与实现,需要的可以参考下
    2023-12-12
  • Python创建普通菜单示例【基于win32ui模块】

    Python创建普通菜单示例【基于win32ui模块】

    这篇文章主要介绍了Python创建普通菜单,结合实例形式分析了Python基于win32ui模块创建普通菜单及添加菜单项的相关操作技巧,并附带说明了win32ui模块的安装命令,需要的朋友可以参考下
    2018-05-05
  • 基于Python实现一个PDF特殊字体提取工具

    基于Python实现一个PDF特殊字体提取工具

    在PDF文档处理场景中,我们常常需要针对特定格式的文本内容进行提取分析,本文介绍的"PDF特殊字体提取器"是一款基于Python开发的桌面应用程序感兴趣的小伙伴跟着小编一起来看看吧
    2025-03-03
  • Pycharm制作搞怪弹窗的实现代码

    Pycharm制作搞怪弹窗的实现代码

    这篇文章主要介绍了Pycharm制作搞怪弹窗(声音强制最大,屏幕亮度强制最亮,按钮躲避,弹窗炸弹),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • 一小时学会TensorFlow2之大幅提高模型准确率

    一小时学会TensorFlow2之大幅提高模型准确率

    这篇文章主要介绍了TensorFlow2之大幅提高模型准确率,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • 基于Pytorch实现逻辑回归

    基于Pytorch实现逻辑回归

    这篇文章主要为大家详细介绍了基于Pytorch实现逻辑回归,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07

最新评论