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 :D

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. :D

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.

Bild

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.
RSBasic hat geschrieben: 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
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:
Bild

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.