gpt4 book ai didi

python - 我正在尝试制作一个具有可变透明度的 wx.Frame(基于 erase bk 事件中映射的 png)

转载 作者:行者123 更新时间:2023-11-28 18:55:21 24 4
gpt4 key购买 nike

我正在尝试制作一个在应用程序加载时显示的特殊启动画面,它输出各种组件加载的消息并带有进度条。

我要处理的第一项工作是将 .png 图像映射到将承载启动画面的框架。


导入 wx



类 edSplash(wx.Frame):
def __init__( self , parent ,头衔):
wx.Frame.__init__(self, parent, -1, title, size=(410, 410), style=wx.NO_BORDER)
self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM)
self.Center()
self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBackground)
返回

def OnEraseBackground( self ,evt):
直流 = evt.GetDC()
如果不是直流:
dc = wx.ClientDC(self)
rect = self.GetUpdateRegion().GetBox()
dc.SetClippingRect(矩形)

tempBrush = wx.Brush((0,0,0,0),wx.TRANSPARENT)
打印温度刷
dc.SetBackground(tempBrush)
dc.SetBackgroundMode(wx.TRANSPARENT)
#dc.Clear()
img = wx.Image("splash.png", wx.BITMAP_TYPE_PNG, -1)
bmp = wx.BitmapFromImage(img)
dc.DrawBitmap(bmp, 0, 0, 真)

def PushMessage( self ,消息):
打印信息


类 edApp(wx.App):
def OnInit( self ):
splash = edSplash(无,'Ed')
self.SetTopWindow(启动画面)
飞溅。显示(真)
返回真

如果 __name__ == '__main__':
edApp(redirect=False).MainLoop()

问题是 dc.Clear() 清除为不透明的矩形,尽管我已将其画笔和模式设置为透明(我认为 :D)。注释掉 dc.Clear() 会根据 .png 的 alpha channel 为我提供所需的可变透明度,但该窗口会从相邻窗口收集图像噪声。

我怎样才能既获得 .png 的透明度又将背景清除为透明画笔以防止收集图像噪声?

最佳答案

也许您应该尝试将背景图像放在面板上而不是框架上。这是一种方法:

http://www.blog.pythonlibrary.org/2010/03/18/wxpython-putting-a-background-image-on-a-panel/

关于python - 我正在尝试制作一个具有可变透明度的 wx.Frame(基于 erase bk 事件中映射的 png),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3343095/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com