wxPython之wx.DC绘制形状


Posted in Python onNovember 19, 2019

本文实例为大家分享了wxPython绘制形状的具体代码,供大家参考,具体内容如下

绘制形状

除了绘制文本和位图,DC也可以绘制任意的形状和线。这允许我们完全自定义窗口部件和控件的外观。

示例说明

利用PaintDC创建一个简单笑脸控件。

#-*-coding: UTF-8 -*-
#------------------------------------------------------
#Purpose: nothing....

#Author: 阿Bin先生
#Created: 2017年5月21日
#------------------------------------------------------
import wx

class Smiley(wx.PyControl):
  def __init__(self, parent, size=(100, 100)):
    super(Smiley, self).__init__(parent,
    size=size,
    style=wx.NO_BORDER)
    # Event Handlers
    self.Bind(wx.EVT_PAINT, self.OnPaint)

  def OnPaint(self, event):
    """Draw the image on to the panel"""
    dc = wx.PaintDC(self) # Must create a PaintDC
    # Get the working rectangle we can draw in
    rect = self.GetClientRect()
    # Setup the DC
    dc.SetPen(wx.BLACK_PEN) # for drawing lines / borders
    yellowbrush = wx.Brush(wx.Colour(255, 255, 0))
    dc.SetBrush(yellowbrush) # Yellow fill

    cx = (rect.width / 2) + rect.x
    cy = (rect.width / 2) + rect.y
    radius = min(rect.width, rect.height) / 2
    dc.DrawCircle(cx, cy, radius)
    eyesz = (rect.width / 8, rect.height / 8)
    eyepos = (cx / 2, cy / 2)
    dc.SetBrush(wx.BLUE_BRUSH)
    dc.DrawRectangle(eyepos[0], eyepos[1],
    eyesz[0], eyesz[1])
    eyepos = (eyepos[0] + (cx - eyesz[0]), eyepos[1])
    dc.DrawRectangle(eyepos[0], eyepos[1],
    eyesz[0], eyesz[1])
    dc.SetBrush(yellowbrush)
    startpos = (cx / 2, (cy / 2) + cy)
    endpos = (cx + startpos[0], startpos[1])
    dc.DrawArc(startpos[0], startpos[1],
    endpos[0], endpos[1], cx, cy)
    dc.SetPen(wx.TRANSPARENT_PEN)
    dc.DrawRectangle(startpos[0], cy,
    endpos[0] - startpos[0],
    startpos[1] - cy)

class MyFrame(wx.Frame):
  def __init__(self, parent, *args, **kwargs):
    super(MyFrame, self).__init__(parent, *args, **kwargs)
    # Attributes
    self.Panel = wx.Panel(self)
    Smiley(self.Panel)

class MyApp(wx.App):
  def OnInit(self):
    self.frame = MyFrame(None, title="DrawShapes",size = [500, 500])
    self.SetTopWindow(self.frame)
    self.frame.Show()
    return True

if __name__ == "__main__":
  app = MyApp(False)
  app.MainLoop()

运行结果:

wxPython之wx.DC绘制形状

示例分析

DC的SetPen用来绘制线条和形状的边框。DC的SetBrush用来填充颜色。首先使用DCdeDrawCircle绘制一个黑色边框的黄色圆,表示头。然后使用DrawRectangle方法绘制蓝色矩形,表示眼睛。最后使用DC的DrawArch方法绘制扇形,因为只想用圆弧来表示微笑,所以用矩形覆盖圆弧两端的两条半径线。

常用的基本绘制函数

wxPython之wx.DC绘制形状

wxPython之wx.DC绘制形状

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
linux系统使用python监控apache服务器进程脚本分享
Jan 15 Python
django框架如何集成celery进行开发
May 24 Python
python编程羊车门问题代码示例
Oct 25 Python
基于pandas数据样本行列选取的方法
Apr 20 Python
不管你的Python报什么错,用这个模块就能正常运行
Sep 14 Python
python数据结构学习之实现线性表的顺序
Sep 28 Python
浅谈python的dataframe与series的创建方法
Nov 12 Python
django使用admin站点上传图片的实例
Jul 28 Python
对django2.0 关联表的必填on_delete参数的含义解析
Aug 09 Python
利用Python绘制有趣的万圣节南瓜怪效果
Oct 31 Python
python爬虫爬取监控教务系统的思路详解
Jan 08 Python
python制作一个简单的gui 数据库查询界面
Nov 19 Python
python matplotlib拟合直线的实现
Nov 19 #Python
Python线程指南分享
Nov 19 #Python
wxpython+pymysql实现用户登陆功能
Nov 19 #Python
pygame编写音乐播放器的实现代码示例
Nov 19 #Python
pyinstaller打包程序exe踩过的坑
Nov 19 #Python
基于Python中的yield表达式介绍
Nov 19 #Python
Python函数式编程指南:对生成器全面讲解
Nov 19 #Python
You might like
php获取当前网址url并替换参数或网址的方法
2010/06/06 PHP
php设计模式 Chain Of Responsibility (职责链模式)
2011/06/26 PHP
js 与或运算符 || && 妙用
2009/12/09 Javascript
基于jQuery的Tab选项框效果代码(插件)
2011/03/01 Javascript
分享8款优秀的 jQuery 加载动画和进度条插件
2012/10/24 Javascript
时间戳转换为时间 年月日时间的JS函数
2013/08/19 Javascript
JS实现兼容性好,自动置顶的淘宝悬浮工具栏效果
2015/09/18 Javascript
JavaScript中的this机制
2016/01/30 Javascript
浅析jquery unbind()方法移除元素绑定的事件
2016/05/24 Javascript
js 单引号替换成双引号,双引号替换成单引号的实现方法
2017/02/16 Javascript
Angular.JS去掉访问路径URL中的#号详解
2017/03/30 Javascript
CheckBox多选取值及判断CheckBox选中是否为空的实例
2017/10/31 Javascript
详解Angular路由之路由守卫
2018/05/10 Javascript
vue mounted组件的使用
2018/06/18 Javascript
Vue 实现展开折叠效果的示例代码
2018/08/27 Javascript
详解ESLint在Vue中的使用小结
2018/10/15 Javascript
React和Vue中监听变量变化的方法
2018/11/14 Javascript
关于element-ui表单中限制输入纯数字的解决方式
2020/09/08 Javascript
Python查询Mysql时返回字典结构的代码
2012/06/18 Python
Python栈算法的实现与简单应用示例
2017/11/01 Python
Python+matplotlib绘制不同大小和颜色散点图实例
2018/01/19 Python
Python正则表达式匹配数字和小数的方法
2019/07/03 Python
Python秒算24点实现及原理详解
2019/07/29 Python
Python3爬虫里关于Splash负载均衡配置详解
2020/07/10 Python
python爬虫请求头的使用
2020/12/01 Python
Python Selenium破解滑块验证码最新版(GEETEST95%以上通过率)
2021/01/29 Python
HTML5如何实现元素拖拽
2016/03/11 HTML / CSS
广告学专业毕业生自荐信
2013/09/24 职场文书
结构工程研究生求职信
2013/10/13 职场文书
大专自我鉴定范文
2013/10/23 职场文书
教师绩效考核方案
2014/01/21 职场文书
银行工作检查书范文
2014/01/31 职场文书
请假条标准格式规范
2014/04/10 职场文书
话题作文之诚信
2019/11/28 职场文书
浅谈JavaScript浅拷贝和深拷贝
2021/11/07 Javascript
Android学习之BottomSheetDialog组件的使用
2022/06/21 Java/Android