Nagut, dann hier eine Zip mit dem Testprogramm von mir...
http://www.newagedesigns.de/bunt.zip
PNG-Transparenz
- nkoehring
- User
- Beiträge: 543
- Registriert: Mittwoch 7. Februar 2007, 17:37
- Wohnort: naehe Halle/Saale
- Kontaktdaten:
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo nkoehring!nkoehring hat geschrieben:Testprogramm
Na, sieht doch schon mal nicht so schlecht aus. Wenn du die Anzeigeprobleme (Transparenz) unter Windows XP in den Griff bekommen hast, dann könnte es sein, dass es auch keine Probleme mehr unter Linux gibt.
Ubuntu im VirtualBox:
http://gerold.bcom.at/bilder/petool_linux_01.png
http://gerold.bcom.at/bilder/petool_linux_02.png
Windows XP:
http://gerold.bcom.at/bilder/petool_windowsxp_01.png
mfg
Gerold
Zuletzt geändert von gerold am Mittwoch 1. August 2007, 18:00, insgesamt 1-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- nkoehring
- User
- Beiträge: 543
- Registriert: Mittwoch 7. Februar 2007, 17:37
- Wohnort: naehe Halle/Saale
- Kontaktdaten:
Ah, vielen Dank fuers Testen.
Mir ist aufgefallen, dass die Transparenz unter Windows zurueckkehrt, wenn ich das Fenster am unteren Monitorrand kurz "verschwinden" lasse und dann wieder in den sichtbaren bereich hole. Was ist denn der Unterschied zwischen einem Refresh und dieser Art des Neuzeichnens? Kann ich das vielleicht direkt erzwingen oder ist es doch eine Windows-Sache?
Mir ist aufgefallen, dass die Transparenz unter Windows zurueckkehrt, wenn ich das Fenster am unteren Monitorrand kurz "verschwinden" lasse und dann wieder in den sichtbaren bereich hole. Was ist denn der Unterschied zwischen einem Refresh und dieser Art des Neuzeichnens? Kann ich das vielleicht direkt erzwingen oder ist es doch eine Windows-Sache?
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo nkoehring!nkoehring hat geschrieben:Mir ist aufgefallen, dass die Transparenz unter Windows zurueckkehrt, wenn ich das Fenster am unteren Monitorrand kurz "verschwinden" lasse und dann wieder in den sichtbaren bereich hole. Was ist denn der Unterschied zwischen einem Refresh und dieser Art des Neuzeichnens? Kann ich das vielleicht direkt erzwingen oder ist es doch eine Windows-Sache?
Wenn das Fenster verdeckt wird und danach wieder in den sichtbaren Bereich vorgeholt wird, dann wird EVT_PAINT automatisch ausgelöst.
``Refresh`` sollte das eigentlich auch tun. :K Aber ``Refresh`` arbeitet erst beim nächsten Event-Loop. Wenn du einen sofortigen Refresh erzwingen willst, dann führe zuerst ``Refresh`` und sofort danach ``Update`` aus. Vielleicht sogar noch ein ``YieldIfNeeded`` nachschieben... Zumindest sollte es dann laut Doku sofort neu gezeichnet werden. Ob es in der Praxis funktioniert, werde ich von dir erfahren.
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- nkoehring
- User
- Beiträge: 543
- Registriert: Mittwoch 7. Februar 2007, 17:37
- Wohnort: naehe Halle/Saale
- Kontaktdaten:
so, es sieht auch nach zusaetzlichem Update genauso aus wie vorher... YieldIfNeeded hab ich allerdings auch nirgends gefunden :K
EDIT: Es wird ja neugezeichnet, auch nach einem einfachen Refresh, aber dadurch wird eben die Transparenz ausgeloescht.
Ich habe das Problem jetzt so geloest, dass einfach mehrere Panels uebereinander gelegt und jeweils (un-)sichtbar geschalten werden.
EDIT: Es wird ja neugezeichnet, auch nach einem einfachen Refresh, aber dadurch wird eben die Transparenz ausgeloescht.
Ich habe das Problem jetzt so geloest, dass einfach mehrere Panels uebereinander gelegt und jeweils (un-)sichtbar geschalten werden.
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Ich habe keine Ahnung, wie diese Buttons generiert werden, aber evt. passt dieser Link zu diesem Thema: http://xoomer.alice.it/infinity77/main/ ... utton.html
mfg
Gerold
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- Sr4l
- User
- Beiträge: 1091
- Registriert: Donnerstag 28. Dezember 2006, 20:02
- Wohnort: Kassel
- Kontaktdaten:
Hallo ich kämpfe ja auch gerade damit wx / PNG.
MaskColour #000000 ist nicht ideal, aber der mir die Grafiken erstellt ist das durch eine Gameengine (3dGS) gewohnt das #000000 Transparent ist.
Manchmal funktioniert bei mir Transparenz und manchmal nicht, die Bilder die ich geschickt bekomme ( mit Adobe Photoshop) erstellt funzktionieren 100%, dann habe ich jedoch das Bild nach bearbeitet mit Gimp und habe nun so eine weissen Rand den ich nicht mehr weg bekomme.
So wie ein Pixel einmal rund ums Bild wird mit default BackgroundColour gemacht, alles weil ich da mit Gimp nachgearbeitet habe.
Halbtransparenz geht nur auf einem wx Bild aber nicht da wo es auf den DesktopHintergrund geht.
Also am besten geht es bei mir über die MaskColour.
Bei meine Buttons muss ich allerdings sagen habe ich nur Transparenz (GIMP) und es geht auch siehe das Close X oben und Login Button
Screenshot:
Code der das Bild erzeugt, auf das ich meine Buttons setze:
PS: Wie man sieht bekomme ich die BackgroundColour von den ListBoxen nicht gesetzet, warum?
*edit*
habe ListBox gegen ListCtrl getauscht und alles geht.
MaskColour #000000 ist nicht ideal, aber der mir die Grafiken erstellt ist das durch eine Gameengine (3dGS) gewohnt das #000000 Transparent ist.
Manchmal funktioniert bei mir Transparenz und manchmal nicht, die Bilder die ich geschickt bekomme ( mit Adobe Photoshop) erstellt funzktionieren 100%, dann habe ich jedoch das Bild nach bearbeitet mit Gimp und habe nun so eine weissen Rand den ich nicht mehr weg bekomme.
So wie ein Pixel einmal rund ums Bild wird mit default BackgroundColour gemacht, alles weil ich da mit Gimp nachgearbeitet habe.
Halbtransparenz geht nur auf einem wx Bild aber nicht da wo es auf den DesktopHintergrund geht.
Also am besten geht es bei mir über die MaskColour.
Bei meine Buttons muss ich allerdings sagen habe ich nur Transparenz (GIMP) und es geht auch siehe das Close X oben und Login Button
Screenshot:
Code der das Bild erzeugt, auf das ich meine Buttons setze:
Code: Alles auswählen
class Frame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, "MK3d Loader", style = wx.FRAME_SHAPED | wx.SIMPLE_BORDER )
panel = wx.Panel(self)
self.panel = panel
self.panel.SetBackgroundColour("#4F3217")
self.panel.Bind(wx.EVT_PAINT, self.OnPaint)
.........
....
def OnPaint(self, evt):
dc = wx.PaintDC(self.panel)
self.bmp = wx.Bitmap("panel.png")
self.SetClientSize((self.bmp.GetWidth(), self.bmp.GetHeight()))
dc.DrawBitmap(self.bmp, 0,0, True)
self.bmp.SetMaskColour("#FFFFFF")
self.SetShape(wx.RegionFromBitmap(self.bmp))
Code: Alles auswählen
self.packet_install = wx.ListBox(self.panel, -1, (538, 169), (122, 121), ["lol","lal"])
self.packet_install.SetBackgroundColour("#4F3217")
habe ListBox gegen ListCtrl getauscht und alles geht.