응용 프로그램이로드되는 동안 표시되는 특수 시작 화면을 만들려고합니다. 출력합니다. 다양한 구성 요소의 메시지로드 및 진행률 표시 줄이 있습니다.변수 transparancy가있는 wx.Frame을 만들려고합니다. (지우기 이벤트에 매핑 된 png를 기반으로합니다)
내가 처음 해결해야 할 작업은 .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.Clear()가 불투명 한 사각형을 지 웁니다이다 (내 생각 : D). dc.Clear()를 주석 처리하면 .png의 알파 채널을 기반으로 원하는 가변적 인 투명도를 얻을 수 있지만 창이 이웃하는 창에서 이미지 노이즈를 수집합니다.
어떻게하면 .png의 투명도를 얻고 이미지 노이즈가 발생하지 않도록 배경을 투명한 브러시로 지울 수 있습니까?