我想做一个wx.框架基于png中的事件araccy(使用bk映射的event araccy)

2024-09-29 23:25:11 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我要处理的第一个任务是将.png图像映射到将承载初始屏幕的帧。在

import wx

class edSplash(wx.Frame):
    def __init__(self, parent, title):
        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)
        return

    def OnEraseBackground(self, evt):
        dc = evt.GetDC() 
        if not dc:
            dc = wx.ClientDC(self)
            rect = self.GetUpdateRegion().GetBox()
            dc.SetClippingRect(rect)

        tempBrush = wx.Brush((0,0,0,0),wx.TRANSPARENT)
        print tempBrush
        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, True)

    def PushMessage(self, mesage):
        print mesage


class edApp(wx.App):
    def OnInit(self):
        splash = edSplash(None, 'Ed')
        self.SetTopWindow(splash)
        splash.Show(True)
        return True

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

问题是dc。清除()清除为不透明矩形,尽管我已将其笔刷和模式设置为透明(我认为:D)。发表评论dc。清除()提供了基于.png的alpha通道所需的可变透明度,但窗口会从相邻窗口收集图像噪声。在

我如何既能获得.png的透明度,又能将背景清除到透明画笔上,以防止收集图像噪音?在


Tags: 图像selftrue屏幕pnginitdefdc

热门问题