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 相关文章推荐
Python制作数据导入导出工具
Jul 31 Python
python中的错误处理
Apr 10 Python
python生成圆形图片的方法
Mar 25 Python
Python使用装饰器进行django开发实例代码
Feb 06 Python
python 每天如何定时启动爬虫任务(实现方法分享)
May 21 Python
由Python编写的MySQL管理工具代码实例
Apr 09 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
Aug 26 Python
python manage.py runserver流程解析
Nov 08 Python
Python实现使用dir获取类的方法列表
Dec 24 Python
Python Numpy库常见用法入门教程
Jan 16 Python
Python实现投影法分割图像示例(二)
Jan 17 Python
python 数据分析实现长宽格式的转换
May 18 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四大安全策略
2014/03/12 PHP
Thinkphp实现MySQL读写分离操作示例
2014/06/25 PHP
php下foreach提示Warning:Invalid argument supplied for foreach()的解决方法
2014/11/11 PHP
PHP使用内置dir类实现目录遍历删除
2015/03/31 PHP
php利用递归实现删除文件目录的方法
2016/09/23 PHP
php文件上传、下载和删除示例
2020/08/28 PHP
用JavaScrpt实现文件夹简单轻松加密的实现方法图文
2008/09/08 Javascript
JS 时间显示效果代码
2009/08/23 Javascript
js 设置选中行的样式的实现代码
2010/05/24 Javascript
JQueryEasyUI Layout布局框架的使用
2013/04/08 Javascript
JS 各种网页尺寸判断实例方法
2013/04/18 Javascript
浅谈EasyUI中编辑treegrid的方法
2015/03/01 Javascript
JavaScript中数据结构与算法(三):链表
2015/06/19 Javascript
javascript作用域链(Scope Chain)用法实例解析
2015/11/30 Javascript
概述javascript在Google IE中的调试技巧
2016/11/24 Javascript
小程序scroll-view组件实现滚动的示例代码
2018/09/20 Javascript
Flutter实现仿微信底部菜单栏功能
2019/09/18 Javascript
使用Typescript开发微信小程序的步骤详解
2021/01/12 Javascript
[49:20]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
python检测主机的连通性并记录到文件的实例
2018/06/21 Python
解决使用Pandas 读取超过65536行的Excel文件问题
2020/11/10 Python
解决python3.6用cx_Oracle库连接Oracle的问题
2020/12/07 Python
整理的15个非常有用的 HTML5 开发教程和速查手册
2011/10/18 HTML / CSS
GANT葡萄牙官方商店:拥有美国运动服传统的生活方式品牌
2018/10/18 全球购物
The Hut美国/加拿大:英国领先的豪华在线百货商店
2019/03/26 全球购物
老师推荐信
2013/10/28 职场文书
入党积极分子介绍信
2014/01/17 职场文书
运动会广播稿200米
2014/01/27 职场文书
整顿机关作风心得体会
2014/09/10 职场文书
向国旗敬礼活动总结
2014/09/27 职场文书
租车协议书
2015/01/27 职场文书
2015纪念九一八事变84周年演讲稿
2015/03/19 职场文书
太行山上观后感
2015/06/05 职场文书
环保建议书范文
2015/09/14 职场文书
MATLAB 全景图切割及盒图显示的实现步骤
2021/05/14 Python
MySQL 使用索引扫描进行排序
2021/06/20 MySQL