Seite 2 von 4
Re: Frage ImageGadget Button und ButtonGadget
Verfasst: 02.01.2014 15:07
von RSBasic
@dige
Anscheinend siehst du den Unterschied nicht bzw. der Effekt ist bei dir nicht sichtbar?
http://www.dateiupload.net/download.php ... 05a87d598a
Beim zweiten Code ist der Effekt aufgrund der Größe nicht sichtbar.
Re: Frage ImageGadget Button und ButtonGadget
Verfasst: 02.01.2014 15:15
von dige
Ach jetzt sehe ich es... die Größe vom ButtonImageGadget() ist anders.
Ich dachte die Codes sind komplett identisch...
Danke fürs aufklären - ich bin erleichtert

Re: Frage ImageGadget Button und ButtonGadget
Verfasst: 02.01.2014 15:28
von RSBasic
Wobei ich dank deiner Frage jetzt ein Fehler von mir entdeckt habe. Der Code "Ohne Klick-Animation" ist eigentlich total sinnfrei, weil der Effekt trotzdem sichtbar ist, wenn man z.B. eine nicht einfarbige Grafik nutzt. Die Grafik wird trotzdem beim Klick-Event ein paar Pixel nach unten/rechts verschoben, nur bei einer einfarbigen Grafik, die ich in beiden Beispielcodes erstellt habe, ist mir das nicht aufgefallen.
Gut, dass du nochmal nachgefragt hast. Mir wär das gar nicht aufgefallen, weil ich nur eine einfarbige Grafik benutzt habe.

Re: Frage ImageGadget Button und ButtonGadget
Verfasst: 02.01.2014 21:05
von udg
@RBASIC
Danke für den Tipp und auch danke für CanvasGadget Info.
Mit Canvas kann ich in meinem Fall nichts anfangen. Es entsteht immer ein kurioser MouseOver Event sobald ich Über ein Canvas mit der Maus fahre.
Letztendlich habe ich eine schicke Lösung mit ButtonImageGadget gefunden.
Jetzt mache ich die angezeigte Schrift (Infos wie Songname und Zeit) erstmal transparent und dann gehts weiter ans Design und weitere Funktionen.
So long
Grüße an alle und Vielen Dank
Re: Frage ImageGadget Button und ButtonGadget
Verfasst: 02.01.2014 21:26
von CSHW89
Beim Canvas muss man mit EventType erstmal prüfen, welches Ereignis aufgetreten ist.
Code: Alles auswählen
...
Case #IDDeinesCanvasGadget
Select EventType()
Case #PB_EventType_LeftClick
Debug "Click!"
Case #PB_EventType_MouseEnter
Debug "MouseEnter!"
...
EndSelect
...
lg Kevin
Re: Frage ImageGadget Button und ButtonGadget
Verfasst: 02.01.2014 21:27
von RSBasic
@udg
Falls du gerne zusätzlich die Hintergrundfarbe deines TrackBarGadgets bestimmen möchtest, hier ein Code für dich:
Code: Alles auswählen
EnableExplicit
Define EventID
Global TBColor = CreateSolidBrush_(RGB(100, 200, 255))
Procedure WCB(WindowID, Message, wParam, lParam)
Protected Result
Result = #PB_ProcessPureBasicEvents
Select Message
Case #WM_CTLCOLORSTATIC
Select lparam
Case GadgetID(1)
SetBkMode_(wParam, #TRANSPARENT)
Result = TBColor
EndSelect
EndSelect
ProcedureReturn Result
EndProcedure
If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
TrackBarGadget(1, 50, 50, 400, 50, 0, 50, #PB_TrackBar_Ticks)
SetWindowColor(0, RGB(100, 200, 255))
SetWindowCallback(@WCB(),0)
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
DeleteObject_(TBColor)
End
EndIf
ForEver
EndIf
Und wenn du außerdem auch noch die Hintergrundfarbe deines TextGadgets bestimmen möchtest, z.B. transparent:
http://www.rsbasic.de/aktualisierung/wi ... %20Text.pb
Re: Frage ImageGadget Button und ButtonGadget
Verfasst: 03.01.2014 00:30
von udg
CSHW89 hat geschrieben:Beim Canvas muss man mit EventType erstmal prüfen, welches Ereignis aufgetreten ist. lg Kevin
ich habe meine Events definiert aber leider ohne buttenklick erfolg. hier mal ein auszug:
Code: Alles auswählen
; hier definier ich meinen Button
play_button_1 = CatchImage(#PB_Any, ?play_button_1_start, ?play_button_1_End - ?play_button_1_start)
CanvasGadget(#Button_2, 109, 8, 47, 50) )
StartDrawing(CanvasOutput(#Button_2));StartDrawing(ImageOutput(play_button_1))
DrawImage(ImageID(play_button_1),0,0|#PB_2DDrawing_AlphaBlend) ;Bild hinten
StopDrawing()
FreeImage(play_button_1)
;-Canvas PlayButton
{
If Event = #PB_Event_Gadget And EventGadget()
Select EventType()
Case #PB_EventType_LeftButtonDown
EventGadget = EventGadget()
EventType = EventType()
If EventGadget = #Button_2 ;Play Button
MP_StopV2M(0) ;Stoppen MP3D LIB
MP_FreeV2M() ;Player freigeben MP3D LIB
PauseSavedPos = 0 ;Reset last position
SoundFileName$ = OpenFileRequester("Choose a .v2m file", "", "V2M files|*.v2m",0)
If Not SoundFileName$ = ""
MP_LoadV2M(SoundFileName$) ; MP3D LIB
MP_PlayV2M(0) ; 0 start from beginning MP3D LIB
MP_SetVolumeV2M(GetGadgetState(#TrackBar_23)/100) ;MP3D LIB
IsPlaying=1
EndIf
EndIf
EndSelect
EndIf
}
kurioser Weise funktioniert mein Canvas nicht als Button. Sobald ich mit der Maus darüber fahre wird der Event schon ausgelöst. Ich denke das hängt mit dem rest des Codes zusammen.
Inzwischen finde ich aber ButtonImageGadget gut

Re: Frage ImageGadget Button und ButtonGadget
Verfasst: 03.01.2014 00:37
von udg
RSBasic hat geschrieben:@udg
Falls du gerne zusätzlich die Hintergrundfarbe deines TrackBarGadgets bestimmen möchtest, hier ein Code für dich:
Danke, soweit war ich noch gar nicht. Den code werde ich studieren und einpflegen.
Im moment arbeite ich an der Texttransparenz. Bei der Titelanzeige klappt das alles. Nur im Feld wo ich die Playtime anzeigen lasse habe ich noch bugs.
mal schauen das ich das schnell finde.
warscheinlich stimmt da etwas nicht weil der Timer sich pro Sekunde ändert? Ich arbeite daran.
Danke Euch
Re: Frage ImageGadget Button und ButtonGadget
Verfasst: 03.01.2014 09:58
von Bisonte
udg hat geschrieben:kurioser Weise funktioniert mein Canvas nicht als Button. Sobald ich mit der Maus darüber fahre wird der Event schon ausgelöst. Ich denke das hängt mit dem rest des Codes zusammen.
Bei einem CanvasGadget muss man immer darauf achten den Eventtype mit abzufragen und nur auf die gewünschten zu reagieren.
Bei dem Gadget löst so ziemlich alles ein Event aus, selbst die Bewegung der Maus innerhalb des Gadgets (#PB_EventType_MouseMove).
Und vorher, ist natürlich ein PB_Event_Gadget angelaufen, weil das Gadget ja was mitzuteilen hat. Deshalb IMMER die Eventtypes abfragen,
damit unerwünschte Events ins Leere laufen...
Das Canvas zähle ich zu den besten Gadgets von PB, weil man damit so vieles machen kann...
Mit den seit PB 5.x existierenden BindEvent/BindGadgetEvent Funktionen ist das ganze noch schnuckeliger geworden.
Ein ButtonGadget mit einem Canvas "nachzubauen" ist beinahe schon zu einfach

Re: Frage ImageGadget Button und ButtonGadget
Verfasst: 04.01.2014 00:22
von udg
RSBasic hat geschrieben:@udg
Falls du gerne zusätzlich die Hintergrundfarbe deines TrackBarGadgets bestimmen möchtest, hier ein Code für dich:
Code: Alles auswählen
EnableExplicit
Define EventID
Global TBColor = CreateSolidBrush_(RGB(100, 200, 255))
Procedure WCB(WindowID, Message, wParam, lParam)
Protected Result
Result = #PB_ProcessPureBasicEvents
Select Message
Case #WM_CTLCOLORSTATIC
Select lparam
Case GadgetID(1)
SetBkMode_(wParam, #TRANSPARENT)
Result = TBColor
EndSelect
EndSelect
ProcedureReturn Result
EndProcedure
If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
TrackBarGadget(1, 50, 50, 400, 50, 0, 50, #PB_TrackBar_Ticks)
SetWindowColor(0, RGB(100, 200, 255))
SetWindowCallback(@WCB(),0)
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
DeleteObject_(TBColor)
End
EndIf
ForEver
EndIf
Und wenn du außerdem auch noch die Hintergrundfarbe deines TextGadgets bestimmen möchtest, z.B. transparent:
http://www.rsbasic.de/aktualisierung/wi ... %20Text.pb
Vielen Dank. Leider nutzt mir der Code nichts, denn hiermit wird lediglich der Trackbar mit der selben farbe belegt wie man den Hintergrund farblich definiert. Was ich brauch ist eine Funktion/ Befehl, den Trackbar transparent machen zu können.
Ich kann diesen mit gnozal's PureColor Library transparent machen. Sieht sehr gut aus. nur sobald ich den Slider bewege oder der Song losspielt. zeichnet sich die Farbe wieder rein

Need Help .
Bild:
Den Text habe ich inzwischen freigestellt,sodass er nun ringsherum durchsichtig ist. leider habe ich auch hier ein großes Problem.
Wenn der Song anfängt zu spielen flackert der Text ganze unerträglich. Ich habe dieses Problem nun schon in vielen Beiträgen gelsesen.
Mit welcher Möglichkeit kann man dieses Flackern unterbinden?
Das wäre ein ganz wichtiger Punkt.