wxPython之wx.DC绘制形状

想要学习wxPython的看这里,wxPython模块超详细汇总(供自己学习用) wxPython简介 wxPython是一个用于创建桌面GUI应用程序的跨平台工具包。开发人员可以在Windows,MacOS和各种Unix/Linux系统上创建自己的应用程序。wxPython是wxWidgets的包装器,它是一个成熟的跨平台C ++库。 wxPython下载: pip install -U wxPython WX 该模块中的类是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()

运行结果:

这里写图片描述

示例分析

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

常用的基本绘制函数

这里写图片描述
这里写图片描述

35、wxPython 设备上下文的使用与图形绘制 本文详细介绍了wxPython中设备上下文的使用方法与图形绘制技术,涵盖屏幕、非屏幕及缓冲设备上下文的创建与应用场景。通过一个完整的雷达图示例,展示了如何利用wx.DC及其子类进行自定义绘图,并采用双缓冲技术防止屏幕闪烁。文章还解析了事件处理、坐标转换和动态数据更新等关键环节,帮助开发者掌握在wxPython中实现复杂图形界面的技能。 阅读详情

相关推荐

wxpython绘制圆角窗体

主要为大家详细介绍了wxpython绘制圆角窗体,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

wxpython圆角窗体的绘制

# -*- coding:gbk -*- import wx class RCDialog(wx.Dialog): def __init__(self,parent=None,size=wx.DefaultSize): wx.Dialog.__init__(self, parent, -1, size=size, style=wx.FRAME_

ld490832353的专栏 2232

博途V17 & PLCSIM & FactoryIO 连接教程

PLCSIM V17 和 FactoryIO 连接教程前言一、软件版本二、连接步骤1. 连接PLCSIM2. 博途编程3.连接FactoryIO总结 前言 该文详细讲解了新手入门博途,并通过使用自带PLCSIM和FactoryIO实现连接。 一、软件版本 TIA Portal V17 S7-PLCSIM V17 Factory IO V2.5.1 二、连接步骤 1. 连接PLCSIM 打开PLCSIM 进入项目模式 新建仿真项目 2. 博途编程 将F

soledad_chao的博客 2万+

小程序-去除边框圆角以及边框

button::after{border: none;border-radius: 0;}button{ border-radius: 0;} <button open-type="share" class="user-share-bottom"> <navigator class="option-item"> <view clas...

疯癫居士 2190

C/C++ 计算程序运行的时间

C/C++计算程序执行时间的方法,精度依次增加,推荐度也依次增加 1.#include <time.h> clock_t start, finish; double process_interval ; start=clock(); process(); //要计时的程序 finish=clock(); process_interval =(double)(finish-star...

stu_shanghui的博客 1020

VideoPose3d:环境搭建+制作自己的视频

论文链接:3D human pose estimation in video with temporal convolutions and semi-supervised training 代码链接:https://github.com/facebookresearch/VideoPose3D 环境搭建:ubuntu20.04+pytorch1.8+cuda10.2+python3.6+anaconda 1.启动anaconda环境 新建环境命令: conda create -n pytorc.

willbetter01的博客 4943

画图: Python画矩形框

实际效果: 1. 核心函数:patches.Rectangle() 参数分别是:左下角顶点坐标,width即向右,height即向上,facecolor='none'会只有框,本身 没颜色 2. 我要画多个矩形 直接currentAxis.add_patch(rect),最后plt.show() 3. 设置坐标轴刻度:plt.xticks(range(155000,245000,3000),range(155,245,3)) ...

郝久武的博客 1万+

如何用python开发“跳一跳”游戏【附源码】

jump_start_time = pygame.time.get_ticks() # 记录跳跃开始时间。jump_duration = current_time - jump_start_time # 计算跳跃持续时间。current_time = pygame.time.get_ticks() # 获取当前时间。jump_velocity = -15 # 设置跳跃的初始速度。# 如果小球跳跃结束,重置跳跃状态。# 根据跳跃持续时间计算跳跃高度。# 移除超出屏幕的障碍物。

helloshili2011的博客 2496

wxpython按钮形状如何修改_wxPython之wx.DC绘制形状

本文实例为大家分享了wxPython绘制形状的具体代码,供大家参考,具体内容如下绘制形状除了绘制文本和位图,DC也可以绘制任意的形状和线。这允许我们完全自定义窗口部件和控件的外观。示例说明利用PaintDC创建一个简单笑脸控件。#-*-coding: UTF-8 -*-#------------------------------------------------------#Purpose: ...

weixin_39663605的博客 231

工业级实战:C#上位机集成YOLO实现多目标跟踪(含数据库存储+报表导出)

推理核心:ONNX Runtime实现C#直接推理YOLO模型,GPU优先+CPU降级适配工业机;跟踪核心:SORT算法轻量级实现多目标跟踪,保证工业场景实时性与稳定性;数据核心:MySQL存储+本地缓存,Excel报表标准化导出,满足工业数据追溯与质检需求;部署核心:模型优化、GPU加速、开机自启,保证工业级7x24小时运行。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 474

Midscene.js(1):Chrome 插件实战之基于 AI 驱动 WEB UI 自动化测试「喂饭教程」

Midscene.js 是一款开源的AI驱动UI自动化工具,支持自然语言交互、数据提取、断言验证等多种功能。自然语言交互。本文将以 Midscene.js Chrome 插件为例,带你从零上手,体验如何用最简单的方式实现高效、智能的UI自动化测试。

blues_C的博客 4404

pythonwx文档蹦的笔_wxPython之wx.DC绘制形状

本文实例为大家分享了wxPython绘制形状的具体代码,供大家参考,具体内容如下绘制形状除了绘制文本和位图,DC也可以绘制任意的形状和线。这允许我们完全自定义窗口部件和控件的外观。示例说明利用PaintDC创建一个简单笑脸控件。#-*-coding: UTF-8 -*-#------------------------------------------------------#Purpose: ...

weixin_39566882的博客 148

微信小程序 - 详细实现打开跳转第三方 H5 网页链接,在微信小程序内直接跳转打开第三方网站链接详细教程(支持跳转公众号文章等,直接复制代码即可)

小程序跳转h5,小程序-Taro小程序中打开h5页面链接,...小程序跳转h5链接(web-view)_微信小程序,小程序如何跳转h5页面,小程序跳转到第三方H5网页,微信小程序跳转第三方H5的方法,小程序-实现怎么跳转打开H5网页链接(或跳转至公众号文章,打开第三方网站,放校验文件,怎么配置业务域名,校验文件验证域名,把校验文件放到对面网站,别人的服务器也打不开没权限怎么放呢,勾选不校验合法域名,txt,打不开别人的网页怎么办,真机调试打不开,无法跳转,有什么其他办法不放校验文件吗,后台配置,怎么

🏆 前端领域优质创作者 3万+

wx.ScrolledWindow wx.PseudoDC

# encoding: utf-8 import logging import random import wx import wx.lib.inspection def GetMyBitmap(): image = wx.Image("0.png", wx.BITMAP_TYPE_PNG) return wx.BitmapFromImage(im...

weixin_30577801的博客 231

【部署】Kimi 接入OpenClaw完整步骤及关键注意事项

本文详细介绍了如何将Kimi AI接入OpenClaw系统的完整步骤。首先需确保环境满足OpenClaw版本要求和系统支持,然后通过配置向导完成本地网关设置和Kimi模型接入,包括API密钥配置。文章提供了详细的命令操作和界面截图指导,并重点说明了安全警告处理、服务状态检查、API密钥有效性验证等关键注意事项。最后还展示了Kimi流量消耗明细和问题排查方法,帮助用户顺利完成接入并解决常见问题。整个流程清晰明了,涵盖了从环境准备到最终验证的全部环节。

海兰 7190

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

wxpython之DC绘图

wxpython的DC绘图初步

微小冷的学习笔记 4774

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

wxPython绘制相关图形

参考链接:http://blog.csdn.net/tony_wong/article/details/17735999http://blog.csdn.net/webzhuce/article/details/72598876https://www.yiibai.com/wxpython/wxpython_drawing_api.htmlhttp://blog.sina.com.cn/s/blo...

winycg的博客 2488

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

wxpython api_wxPython - 绘图API( Drawing API)

wxPython - 绘图API( Drawing API)GDI +(图形绘制界面), CoreGraphics和Cairo libraries构成了wxPython中绘制API的框架。 wx.GraphicsContext是主要的可绘制对象,使用它可以创建各种Device Context对象。wx.DC是一个抽象类。 其派生类用于在不同设备上呈现图形和文本。 设备上下文类是 -wx....

weixin_39950083的博客 251

wxpython api_wxPython绘图API

GDI+(图形绘制接口),CoreGraphics和Cairo库形成wxPython绘图API的框架。wx.GraphicsContext是主要绘制对象,使用它来创建各种设备上下文对象。wx.DC是一个抽象类。它的派生类用于渲染的图形和文字在不同的设备。关联设备类-wx.ScreenDC−使用它描绘在屏幕上,而不是一个单独的窗口。wx.ClientDC−使用它描绘在窗口(无边框等装饰的一...

weixin_39716971的博客 354

wxpython控件旋转_wxpython入门第十一步(俄罗斯方块)

俄罗斯方块俄罗斯方块是由俄罗斯程序员Alexey Pajitnov在1985年设计和编程的。在这个游戏中,我们有七种不同的形状:S形,Z形,T形,L形,线形,镜面L形,和一个方形。每一个形状都是由四个小正方形组成的。这些形状都是从棋盘上掉下来的。俄罗斯方块游戏的目的是移动和旋转这些形状,使它们尽可能地适合。如果我们成功地形成一排,这一排就会被销毁,我们就会得分。我们玩俄罗斯方块游戏,直到我们达到顶...

weixin_39903477的博客 166

wxPython in Action(三十八)

设备上下文的函数当你使用设备上下文时,要记住根据你的绘制类型去使用恰当的上下文(特别要记住wx.PaintDC和 wx.ClientDC的区别)。一旦你有了适当的设备上下文,然后你就可以用它们来做一些事情了。表6.2列出了wx.DC的一些方法。表6.2 wx.DC的常用方法Blit(xdest, ydest, width,height, source, xsrc,ysrc):从 源设备上下文复制块

498

wxpython 之 GDI(二)

Basic primitives Point 最简单的几何对象是一个点。它是一个窗口上平面的点。 DrawPoint(int x, int y) #!/usr/bin/python # -*- coding: utf-8 -*- import wx import random class Points(wx.Frame): def __init__(s...

weixin_30901729的博客 217

wxPython-GDI tutorial

The GDI The GDI (Graphics Device Interface) is an interface for working with graphics. It is used to interact with graphic devices such as monitor, printer or a file. The GDI allows programmers to di

青青的专栏--C/C++ OOA/D Design Pattern 2704
上一篇: wxPython之wx.DC
下一篇: wxPython之SystemSettings
暮-成-雪
博客等级 码龄12年 5328粉丝 319原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值