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 过滤字符串的技巧,map与itertools.imap
Sep 06 Python
wxPython框架类和面板类的使用实例
Sep 28 Python
使用Protocol Buffers的C语言拓展提速Python程序的示例
Apr 16 Python
详解Python中如何写控制台进度条的整理
Mar 07 Python
python 地图经纬度转换、纠偏的实例代码
Aug 06 Python
实例分析python3实现并发访问水平切分表
Sep 29 Python
Pycharm之快速定位到某行快捷键的方法
Jan 20 Python
Python绘图之柱形图绘制详解
Jul 28 Python
python 浮点数四舍五入需要注意的地方
Aug 18 Python
python调用win32接口进行截图的示例
Nov 11 Python
python3.8.3安装教程及环境配置的详细教程(64-bit)
Nov 28 Python
python如何正确使用yield
May 21 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
跟我学Laravel之安装Laravel
2014/10/15 PHP
php利用反射实现插件机制的方法
2015/03/14 PHP
Yii2 rbac权限控制操作步骤实例教程
2016/04/29 PHP
掌握PHP垃圾回收机制详解
2019/03/13 PHP
PHP 超级全局变量相关总结
2020/06/30 PHP
jquery select选中的一个小问题
2009/10/11 Javascript
JQuery Study Notes 学习笔记(一)
2010/08/04 Javascript
javascript得到当前页的来路即前一页地址的方法
2014/02/18 Javascript
常用的JS验证和函数汇总
2014/12/23 Javascript
jQuery学习笔记之jQuery+CSS3的浏览器兼容性
2015/01/19 Javascript
基于jquery实现鼠标滚轮驱动的图片切换效果
2015/10/26 Javascript
轻松实现JavaScript图片切换
2016/01/12 Javascript
每个程序员都需要学习 JavaScript 的7个理由小结
2016/09/03 Javascript
js拼接html字符串的注意事项
2016/10/13 Javascript
原生JS实现在线问卷调查投票特效
2017/01/03 Javascript
详解基于webpack和vue.js搭建开发环境
2017/04/05 Javascript
利用Mongoose让JSON数据直接插入或更新到MongoDB
2017/05/03 Javascript
简单谈谈js的数据类型
2017/09/25 Javascript
基于jQuery中ajax的相关方法汇总(必看篇)
2017/11/08 jQuery
优雅地使用loading(推荐)
2019/04/20 Javascript
JS实现吸顶特效
2020/01/08 Javascript
Layer UI表格列日期格式化及取消自动填充日期的实现方法
2020/05/10 Javascript
python模仿网页版微信发送消息功能
2018/02/24 Python
Python importlib动态导入模块实现代码
2020/04/16 Python
python中判断文件结束符的具体方法
2020/08/04 Python
css3.0 图形构成实例练习一
2013/03/19 HTML / CSS
使用 CSS3 中@media 实现网页自适应的示例代码
2020/03/24 HTML / CSS
使用css3 属性如何丰富图片样式(圆角 阴影 渐变)
2012/11/22 HTML / CSS
美国当红的名品折扣网:Gilt Groupe
2016/08/15 全球购物
英国领先的汽车轮胎和快速健康中心:Kwik Fit
2017/10/29 全球购物
Optimalprint加拿大:在线打印服务
2020/04/03 全球购物
公益活动邀请函
2014/02/05 职场文书
委托证明书
2014/09/17 职场文书
银行贷款收入证明
2014/10/17 职场文书
稽核岗位职责范本
2015/04/13 职场文书
pytorch 带batch的tensor类型图像显示操作
2021/05/20 Python