python wx windows非规则窗体示例(附源码)

本文介绍了如何使用Python的wx库创建非规则窗体,以实现类似桌面宠物的效果。通过设置wx.Frame的style,结合alpha透明度通道图片和wx.Region,可以绘制出非规则形状的窗口,并提供了源码示例及最终效果。
摘要由CSDN通过智能技术生成

python wx windows非规则窗体实现

介绍

windows的规则方框GUI应用是最普遍的形式,而有时你可能需要实现一个非规则的窗体,比如类似桌面宠物,瑞星小狮子之类,而恰好你打算用python来实现该应用,那这篇文章可以帮到你。

插曲

想要在桌面上实现一个非规则卡通宠物的形象,最简单直观的形式是用screenDC直接绘图,确实这样能把图片显示上桌面,但问题是:你擦不掉!擦不掉的后果是你没办法受控地切换到下一帧。win32API InvalidateRect+UpdateWindow?只是post了一个消息,属于异步操作,当你调用完UpdateWindow桌面实际上并未立即更新,desktop窗体什么时候刷新是不受控的,总之,这条路走不通,你必须得实现一个非规则窗体。

思路

  1. 准备UI原材料,带alpha透明度通道图片,可以通过photoshop抠图,我就是这么做的,当然你也可以通过wx.Image.SetAlpha或者PIL库等等手段去自己设置alpha通道 。
  2. 指定wx.Frame的style为 wx.FRAME_SHAPED,允许非规则窗体。
  3. 加载图片位图,调用wx.Image.ConvertAlphaToMask根据alpha值映射成掩码,即划定透明区域,可以指定alpha阈值。(只可用于明确边缘的窗体,因为掩码非0即1,如果是带类似光晕效果的非明确边缘,即0-255的alpha透明度度,不可用,后续文字会介绍非明确边缘的非规则窗体)
  4. wx.Region从位图生成region,再调用SetShape()设置窗体shape,最后dc.DrawBitmap(self.bg,0,0,useMask=True),搞定。

源码

废话不多说,上源码。

#-*- coding:utf-8 -*-
import wx
cartoon_size = (cartoon_width,cartoon_high) = (200,124)

class MyFrame(wx.Frame):
    def __init__(self):
        [Display_width,Display_high
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值