Seite 1 von 2
Image Event
Verfasst: 28.06.2009 19:32
von Tur0k
Hallo Community!
Ich hatte ein Problem mit Transparenten PNG Bilder, was ich nun mit DrawAlphaImage gelöst habe.
Doch wie kann ich ein Event auslösen?
So sieht main.pb aus:
Code: Alles auswählen
Open_Window_0()
Repeat
Event = WindowEvent()
Select Event
Case #PB_Event_CloseWindow
End
Case #PB_Event_Gadget
Select EventGadget()
Case #MyImage2
MessageRequester("Hallo","Du hast Knopf 1 gedrückt",0)
EndSelect
EndSelect
ForEver
End
Und so sieht mein DrawAlphaImage Code aus:
Code: Alles auswählen
LoadImage(#MyImage2,"mypicture.png")
StartDrawing(WindowOutput(0))
DrawAlphaImage(ImageID(#MyImage2),450,5)
StopDrawing()
Funktioniert nicht
Danke und Mfg. Tur0k
Edit: Andere Frage hab ich mal entfernt...
Re: Image Event
Verfasst: 28.06.2009 19:43
von X360 Andy
Und so sieht mein DrawAlphaImage Code aus:
Code: Alles auswählen
LoadImage(#MyImage2,"mypicture.png")
StartDrawing(WindowOutput(0))
DrawAlphaImage(ImageID(#MyImage2),450,5)
StopDrawing()
Funktioniert nicht
Ich hab versucht, ein Image zu zeichen, aber der Hintergrund war dann Schwarz und nicht Transparent
Du musst ein 32Bit Bild nehmen damit es Transparent ist.
Falls du Paint.Net auf deinem PC hast kannst du das dort sehr einfach beim Speichern auswählen.
EDIT
Zu deinem anderen Problem ,mit einem abfrage EventType() dürfte es gehen.
Code: Alles auswählen
Open_Window_0()
Repeat
Event = WindowEvent()
Select Event
Case #PB_Event_CloseWindow
End
Case #PB_Event_Gadget
Select EventGadget()
Case #MyImage2
Select EventType()
Case #PB_EventType_LeftClick
MessageRequester("Hallo","Du hast Knopf 1 gedrückt",0)
EndSelect
EndSelect
EndSelect
ForEver
End
> Ungetestet
Verfasst: 28.06.2009 22:16
von Tur0k
Danke für deine Antwort
Habs versucht, aber funktioniert leider nicht.
Aktueller Code:
Code: Alles auswählen
Open_Window_0()
Repeat
Event = WindowEvent()
Select Event
Case #PB_Event_CloseWindow
End
Case #PB_Event_Gadget
Select EventGadget()
Case #MyImage2
Select EventType()
Case #PB_EventType_LeftClick
MessageRequester("Hallo","Du hast Knopf 1 gedrückt",0)
EndSelect
EndSelect
EndSelect
ForEver
End
Code: Alles auswählen
LoadImage(#MyImage2,"preferences-system.png")
StartDrawing(WindowOutput(0))
DrawAlphaImage(ImageID(#MyImage2),450,5)
StopDrawing()
Danke und Mfg. Tur0k
Verfasst: 28.06.2009 22:36
von HeX0R
Wie man diesem Codeschnippsel ansieht:
ist #MyImage2 kein Gadget, sondern ein Image.
Logisch, dass da kein Event ankommt.
Du musst schon das entsprechende Image
Gadget benutzen (wovon du wohl keins hast).
Du könntest auch über die Mauskoordinaten glücklich werden:
Code: Alles auswählen
Case #WM_LBUTTONUP
If WindowMouseX(0) >= 450 And WindowMouseX(0) <= 450 + ImageWidth(#MyImage2) And WindowMouseY(0) >= 5 And WindowMouseY(0) <= 5 + ImageHeight(#MyImage2)
Debug "aha"
EndIf
Verfasst: 29.06.2009 18:16
von Tur0k
Danke für deine Antwort!
Ich hab mal versucht ein ImageGadget zu erstellt, was auch klappt.
Das Problem ist nur, das der Hintergrund Schwarz ist, auch wenn ich das Bild in Paint.NET in PNG 32Bit gespeichert habe.
So sieht der Code aus:
Code: Alles auswählen
MyImage = LoadImage(#PB_Any,"preferences-system.png")
If CreateImage(#MyImage2, 32, 32)
If StartDrawing(ImageOutput(#MyImage2))
DrawAlphaImage(ImageID(MyImage),0,0)
StopDrawing()
EndIf
EndIf
ImageGadget(#MyImage2, 450, 5, 32, 32, ImageID(#MyImage2))
Hier das Bild:
So siehts aus in Purebasic (4.31):
Mit BackColor ändert sich der Hintergrund trotzdem nicht.
Mfg. Tur0k
Verfasst: 29.06.2009 18:31
von Kaeru Gaman
ein ImageGadget ist (noch) nicht in der Lage, Alpha korrekt darzustellen.
... und wie HeX0R ganz richtig sagte, ein Image ist kein Fensterelement das ein Event haben könnte.
du musst dich also wohl oder übel mit einer Zwischenlösung zufrieden geben.
Verfasst: 29.06.2009 18:38
von X360 Andy
Hab die das PNG mal eben zu einem Icon gemacht, jetzt geht das ganze auch Transparent.
Code: Alles auswählen
Enumeration
#MyImage2
EndEnumeration
MyImage = LoadImage(#PB_Any, "C:\Users\Andreas\Desktop\pref.ico")
OpenWindow(0, 0, 0, 100, 100, "lol", #PB_Window_SystemMenu)
ImageGadget(#MyImage2, 50, 5, 32, 32, ImageID(Myimage))
Repeat
event = WaitWindowEvent(50)
Until event = #PB_Event_CloseWindow
Verfasst: 29.06.2009 18:49
von Kaeru Gaman
aber .ico haben keine Alpha...

Verfasst: 29.06.2009 18:52
von X360 Andy
Ändert aber nichts daran das es nun Transparent ist und das wollte er ja (?)
Und da kein Qualitäts verlust dabei enstanden ist das doch eigentlich egal
Verfasst: 29.06.2009 19:06
von Kaeru Gaman
> Und da kein Qualitäts verlust dabei enstanden ist das doch eigentlich egal
also, das Bild was er da vorzeigt:

hat ja mal ganz eindeutig einen Halbtransparenten Schatten.
"kein Qualitätsverlust" liegt hier nie und nimmer vor, er ist nur für Laien schlecht sichtbar,
wenn die gewählte Hintergrundfarbe mit dem Grau des Schattens gut harmoniert.
aber stelle mal beides auf nem Roten Hintergrund dar, dann wird der Qualitätsverlust so deutlich sichtbar sein, dass er dir auf den Magen schlägt.