Überlagerung von Icons im Imagegadget
Überlagerung von Icons im Imagegadget
Hi Gemeinde.
Ich hab da ein Problem mit der Zuweisung von .ico Dateien auf ein Imagegadget.
Ich erstelle ein Imagegadget und benutze ein zuvor geladenes Icon, welches ich zuweise. Das Problem tritt auf, wenn ich auf das selbe Imagegadget ein anderes Icon zuweisen will.
Das Zuweisen funktioniert, nur leider bleibt auf Grund der vorhandenen Transparenz auch das erste Icon sichtbar (drunter). Das ist halt sehr "unschick".
Mein bisheriger Lösungsgedanke ist, das Gadget mittels FreeGadget zu löschen und neu zu setzen. Was mir aber etwas umständlich erscheint.
Daher die Frage, ob es nicht irgendwie eine einfache Lösung gibt, quasi das Imagegadget vom Image zu befreien ?
Habe ich bereits erwähnt, PB 3.94? Nein? Gut, das alles in PB 3.94 da es ein älteres Projekt ist, welches ich kurz "aufpollieren" muss.
Danke schonmal.
Gruss, Morty
Ich hab da ein Problem mit der Zuweisung von .ico Dateien auf ein Imagegadget.
Ich erstelle ein Imagegadget und benutze ein zuvor geladenes Icon, welches ich zuweise. Das Problem tritt auf, wenn ich auf das selbe Imagegadget ein anderes Icon zuweisen will.
Das Zuweisen funktioniert, nur leider bleibt auf Grund der vorhandenen Transparenz auch das erste Icon sichtbar (drunter). Das ist halt sehr "unschick".
Mein bisheriger Lösungsgedanke ist, das Gadget mittels FreeGadget zu löschen und neu zu setzen. Was mir aber etwas umständlich erscheint.
Daher die Frage, ob es nicht irgendwie eine einfache Lösung gibt, quasi das Imagegadget vom Image zu befreien ?
Habe ich bereits erwähnt, PB 3.94? Nein? Gut, das alles in PB 3.94 da es ein älteres Projekt ist, welches ich kurz "aufpollieren" muss.
Danke schonmal.
Gruss, Morty
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
die einfachste möglichkeit wäre, das image zu clearen, indem du eine box drüberzeichnest.
also startdrawing(imageoutput(..)) und dann box(0,0,breite,höhe)
ob und mit welcher farbe das dann sauber funktioniert im hinblick auf die transparenz musst du antesten...
also startdrawing(imageoutput(..)) und dann box(0,0,breite,höhe)
ob und mit welcher farbe das dann sauber funktioniert im hinblick auf die transparenz musst du antesten...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
hmm, danke. Aber leider auch nicht viel einfacher.
Vorallem weil ich das Image ansich noch brauche.
Ich erklär das mal ein bissl genauer. Es geht um eine Art Play/Pause Taste, die beim Klicken den Status wechselt (man kennt es vom heimischen DVD Player). Daher brauche ich beide Bilder. Das ganze passiert aber auf einem Fenster mit Hintergrundbild. Sprich, eine einfache Box in einer beliebigen Farbe kann man da leider nicht nehmen.
Es scheint wirklich so, als ob man sich vorher alle Gadgetdaten (x,y,breite,hoehe) speichern muss, dann das Gadget mittels Freegadget rausschmeisst um es danach wieder neu zu erstellen. Hmm
Morty
Vorallem weil ich das Image ansich noch brauche.
Ich erklär das mal ein bissl genauer. Es geht um eine Art Play/Pause Taste, die beim Klicken den Status wechselt (man kennt es vom heimischen DVD Player). Daher brauche ich beide Bilder. Das ganze passiert aber auf einem Fenster mit Hintergrundbild. Sprich, eine einfache Box in einer beliebigen Farbe kann man da leider nicht nehmen.
Es scheint wirklich so, als ob man sich vorher alle Gadgetdaten (x,y,breite,hoehe) speichern muss, dann das Gadget mittels Freegadget rausschmeisst um es danach wieder neu zu erstellen. Hmm
Morty
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
hm... sind denn die icons so unterschiedlich?
normalerweise würde ich jetzt davon ausgehen, dass beide einen undurchsichtigen knopf darstellen, der sich nur durch die aufschrift unterscheidet....
egal.
lad doch einfach zwei verschiedene images und wechsel nur, welches image dem gadget zugeordnet wird...
normalerweise würde ich jetzt davon ausgehen, dass beide einen undurchsichtigen knopf darstellen, der sich nur durch die aufschrift unterscheidet....
egal.
lad doch einfach zwei verschiedene images und wechsel nur, welches image dem gadget zugeordnet wird...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
Das mach ich ja. Das eine ist ein Icon mit zwei senkrechten Balken (ein typisches Pausezeichen) und das andere ist ein Dreieck (ein typisches Playzeichen). Und wenn ich das Image auf dem Imagegadget wechsel sehe ich halt unter meinem Playzeichen noch das Pausezeichen (bzw. umgekehrt .. kommt drauf an wie man wechselt). Weil sich halt beide Icons in ihren nichttransparenten Teilen nicht komplett überdecken.
Morty
Morty
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
ne wie jetzt...
die können sich garnicht überdecken, wenn du doch ein neues image zuweist.
nur wenn du ein neues image über ein altes drüber zeichnest,
kann es zu überschneidungen kommen...
ich mein das so:
die können sich garnicht überdecken, wenn du doch ein neues image zuweist.
nur wenn du ein neues image über ein altes drüber zeichnest,
kann es zu überschneidungen kommen...
ich mein das so:
Code: Alles auswählen
Image1 = LoadImage(#PB_Any, "MyImage1.ico")
Image2 = LoadImage(#PB_Any, "MyImage2.ico")
ImageGadget(#Gadget, x, y, Breite, Hoehe, ImageID(Image1) )
; zweites bild anzeigen
SetGadgetState(#Gadget, ImageID(Image2) )
; wieder erstes bild anzeigen
SetGadgetState(#Gadget, ImageID(Image1) )
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
Machen sie aber, das ist ja mein Problem.
Ich hab hier mal eine kleine Testsituation gemacht, vllt. hilft das zur Verdeutlichung.
http://www.box.net/public/iraq0lqazo
Da sind ein Beispielcode, sowie die zwei relevanten Icons drin.
Hier nochmal der Code extra:
Es musste schnell gehen, daher hab ich mal auf Kontrollroutinen verzichtet. Nicht das da jetzt einige meckern.
Morty
Ich hab hier mal eine kleine Testsituation gemacht, vllt. hilft das zur Verdeutlichung.
http://www.box.net/public/iraq0lqazo
Da sind ein Beispielcode, sowie die zwei relevanten Icons drin.
Hier nochmal der Code extra:
Code: Alles auswählen
;PB 3.94
Enumeration ;Fenster
#main_win
EndEnumeration
Enumeration ;Gadgets
#bildgadget
#btn_change
EndEnumeration
Enumeration ;Images
#img_icon1
#img_icon2
EndEnumeration
LoadImage(#img_icon1,"media_pause.ico")
LoadImage(#img_icon2,"media_play.ico")
OpenWindow(#main_win,-1,-1,200,100,#PB_Window_ScreenCentered|#PB_Window_SystemMenu,"Icon Test")
CreateGadgetList(WindowID(#main_win))
ImageGadget(#bildgadget,10,10,16,16,UseImage(#img_icon1))
ButtonGadget(#btn_change,40,10,100,20,"Icon wechseln")
quit=0
Repeat
event=WaitWindowEvent()
Select event
Case #PB_Event_CloseWindow
quit=1
Case #PB_Event_Gadget
If EventGadgetID()=#btn_change
SetGadgetState(#bildgadget,UseImage(#img_icon2))
EndIf
EndSelect
Until quit=1
CloseWindow(#main_win)
End
Morty
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
oh.. gut, dass du das nochmal dazusagst...
ich hätte das jetzt in pb4 getestet...
im moment muss ich mich auch erstmal ums essen kümmern,
heut nachmittag kann ich mir das dann nochmal ansehen...
eigentlich ist es total unlogisch, da das gadget soweit ich weiß selber keinen bildbereich hat, sondern nur das handle zum image beinhaltet.
aber wie gesagt, ich schaus mir später noch mal an...
es ist ja schon mal ein unterschied, dass dort ein useimage() steht...
also war das wohl in pb3.9 noch ganz anders...
ich hätte das jetzt in pb4 getestet...
im moment muss ich mich auch erstmal ums essen kümmern,
heut nachmittag kann ich mir das dann nochmal ansehen...
eigentlich ist es total unlogisch, da das gadget soweit ich weiß selber keinen bildbereich hat, sondern nur das handle zum image beinhaltet.
aber wie gesagt, ich schaus mir später noch mal an...
es ist ja schon mal ein unterschied, dass dort ein useimage() steht...
also war das wohl in pb3.9 noch ganz anders...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.