Icons addieren

Plattformunabhängige GUIs mit wxWidgets.
Antworten
HarryH
User
Beiträge: 266
Registriert: Freitag 23. Mai 2003, 09:08
Wohnort: Deutschland

Mittwoch 16. April 2008, 08:14

Hallo,

Wie kann man zwei Icons addieren, also übereinanderlegen?
Weiß jemand wie das geht?

Damit wäre mir sehr geholfen.
Gruß, Harry
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Mittwoch 16. April 2008, 09:52

HarryH hat geschrieben:Wie kann man zwei Icons addieren, also übereinanderlegen?
Hallo HarryH!

Ich weiß nicht wie es geht. Aber ich würde es zumindest so versuchen:
- Aus den Icons jeweils ein Bitmap machen
- Aus der Demo das raus suchen, was dem was ich brauche am ähnlichsten kommt. (vielleicht Alpha-Blending)
- probieren

mfg
Gerold
:-)
[url]http://halvar.at[/url] | [url=http://halvar.at/elektronik/kleiner_bascom_avr_kurs/]Kleiner Bascom AVR Kurs[/url]
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
HarryH
User
Beiträge: 266
Registriert: Freitag 23. Mai 2003, 09:08
Wohnort: Deutschland

Mittwoch 16. April 2008, 12:50

Hallo,

Ich habe nun etwas raus bekommen, was funktioniert.
Hier ist der Code. Ist möglicherweise noch zu optimieren.

Code: Alles auswählen

def AddIcon2Icon(icon1, icon2, w, h):
    """
    Add an icon to another icon; combine two icons
    icon1 = first icon
    icon2 = second icon
    w    = widht
    h    = height
    """            
    #convert icon1 to bitmap 1
    bmp1 = wx.EmptyBitmap(w, h)
    bmp1.CopyFromIcon(icon1)
    img1 = wx.ImageFromBitmap(bmp1)
    if not img1.HasAlpha():
        img1.InitAlpha()
    bmp1 = wx.BitmapFromImage(img1)
    
    #convert icon2 to bitmap 2
    bmp2 = wx.EmptyBitmap(w, h) 
    bmp2.CopyFromIcon(icon2)
    img2 = wx.ImageFromBitmap(bmp2)        
    img2.InitAlpha()
    bmp2 = wx.BitmapFromImage(img2)
    
    #combine bitmaps in memory dc        
    dc = wx.MemoryDC(bmp1)    
    dc.DrawBitmap(bmp2, 0, 0)        
    
    #convert back to icon
    icon = wx.NullIcon
    icon.CopyFromBitmap(dc.GetAsBitmap())
    return icon
Gruß, Harry
Antworten