我正在尝试制作一个特殊的启动屏幕,在应用程序加载时显示, 它输出加载各种组件的消息,并具有一个进度条。在
我要处理的第一个任务是将.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的透明度,又能将背景清除到透明画笔上,以防止收集图像噪音?在
也许你应该试着把背景图像放在面板上,而不是框架上。有一种方法可以做到:
http://www.blog.pythonlibrary.org/2010/03/18/wxpython-putting-a-background-image-on-a-panel/
相关问题 更多 >
编程相关推荐