Buttonimagegadget beschriften ?

Für allgemeine Fragen zur Programmierung mit PureBasic.
pickelrobert
Beiträge: 207
Registriert: 09.12.2004 22:09

Buttonimagegadget beschriften ?

Beitrag von pickelrobert »

Hallo,

wie versehe ich das Buttonimagegadget mit zusätzlicher Schrift unter dem Bildchen unter Windows und Linux ?

Danke und Gruß
Benutzeravatar
Donald
Beiträge: 307
Registriert: 03.01.2005 02:21
Wohnort: Marl

Re: Buttonimagegadget beschriften ?

Beitrag von Donald »

pickelrobert hat geschrieben:Hallo,

wie versehe ich das Buttonimagegadget mit zusätzlicher Schrift unter dem Bildchen unter Windows und Linux ?

Danke und Gruß
Hätte da ne Lib, aber nur für Windows.

Hast damit die Möglichkeit max. 3 Grafiken pro Gadget zu nehmen.
Grafik 1 = Normale ansicht.
Grafik 2 = beim Klick per Maus (Falls angegeben)
Grafik 3 = Disable (Falls angegeben)

Text kannste wahlweise
links, rechts, oben oder unten anzeigen lassen.

Multiline und Toggle
ist ebenfalls vorhanden.
DONALD :D www.PureBasic-Donald.de gibt es im Moment nicht mehr
PureBasic - jaPBe - PureVisonXP - TailBite
Dr.Pixel
Beiträge: 90
Registriert: 12.08.2005 12:38

Beitrag von Dr.Pixel »

Und wo ist die Lib zu finden?
Würde ich gerne einmal ausprobieren!

mfg
Dr. Pixel
pickelrobert
Beiträge: 207
Registriert: 09.12.2004 22:09

Beitrag von pickelrobert »

Danke für den Hinweis. Mir geht es aber hauptsächlich um Linux, da ich eine Anwendung von VB6 (in Teilen) nach Linux portieren will, unter Windows wird entwickelt und getestet, da das Hin- und Herschalten einfacher ist. Die Windows-Anwendung wird nicht nach PB portiert - da gibt's einfach noch zu viele Sachen, die sich mit PB nicht lösen lassen, z.B. gibt's kein richtiges Grid (wie MSFlexGrid), kein gescheites Drag & Drop (außer mit Dateien), zu geringer maximaler Stringspeicher usw. usw.
Benutzeravatar
Hroudtwolf
Beiträge: 1416
Registriert: 30.10.2004 23:33
Kontaktdaten:

Beitrag von Hroudtwolf »

Vieleicht wäre das was für dich...
http://www.purebasic-lounge.de/viewtopic.php?p=973#973
pickelrobert
Beiträge: 207
Registriert: 09.12.2004 22:09

Beitrag von pickelrobert »

Habe Deinen Code leicht modifiziert. Bild ist jetzt oben und Schrift unten. Außerdem wird Text und Bild "dynamisch" positioniert - je nach Größe des Buttons. Die Hintergrundfarbe wird jetzt (wenn nicht gesetzt) aus der Fensterfarbe geholt. Allerdings entspricht die Darstellung im Modus "Deaktiviert" nicht meinen Vorstellungen. Hast Du da 'ne Idee (Grafikzeug ist nicht so mein Ding)

Code: Alles auswählen

Procedure ButtonIconGadget (gadget.l,x.l,y.l,width.l,height.l,text.s,fontname.s,fontsize.l,fontcolor.l,backcolor.l,image.l)
  Protected ImgTmp.l, IconWidth.l, IconHeight.l, rd.l, gn.l, bl.l, tmplen.l, FontID.l
  If Fontname.s="" : Fontname.s="Arial" : EndIf
  If Fontsize.l=0 : Fontsize.l=8 : EndIf
  FontID.l=LoadFont(0,fontname.s,fontsize.l)
  ;UseImage(0)
  IconWidth.l  = ImageWidth()
  IconHeight.l = ImageHeight()
  rd.l = Red(fontcolor.l)
  gn.l = Green(fontcolor.l)
  bl.l = Blue(fontcolor.l)
  ;Hintergrundfarbe des Fensters ermitteln, wenn backcolor = -1  
  If backcolor.l=-1
     If StartDrawing (WindowOutput())
        backcolor.l=Point(5, 5)
        StopDrawing ()
     EndIf
  EndIf
  ;Weiter im Text
  ImgTmp.l=CreateImage (#PB_Any,width.l,height.l)
  If ImgTmp.l<>0
     UseImage(ImgTmp.l)
     If StartDrawing (ImageOutput())
        DrawingMode(0)
        Box (0,0,width.l,height.l,backcolor.l)
        If text.s=""
           DrawImage (image.l,(width.l-IconWidth.l)/2,(height.l-IconHeight.l)/2)  
        Else
           DrawImage (image.l,(width.l-IconWidth.l)/2,(((height.l/3)*2)-IconHeight.l)/2)  
           DrawingMode(1)
           DrawingFont(FontID.l)
           FrontColor (rd.l,gn.l,bl.l)
           tmplen.l=(width.l-TextLength(text.s)) / 2
           Locate (tmplen.l,((height.l/3)*2)-(fontsize.l/2))
           DrawText(text.s)
        EndIf
        StopDrawing ()
     EndIf
  EndIf
  ButtonImageGadget (gadget.l,x.l,y.l,width.l,height.l,UseImage(ImgTmp.l))
EndProcedure
Und hier die Aufrufprozedur:

Code: Alles auswählen

If OpenWindow (1,100,100,200,200,#PB_Window_SystemMenu,"test")
   If CreateGadgetList (WindowID(1))
      image.l=LoadImage (0,"neu.ico")
      ;ButtonIconGadget (1,50,50,50,50,"Neu","Tahoma",10,RGB(0,0,255),RGB(255,255,0),image.l)
      ButtonIconGadget (1,50,50,35,35,"Neu","",0,0,-1,image.l)
   EndIf
   Repeat
      ev.l=WaitWindowEvent()
      If ev.l=#PB_Event_Gadget
         If EventGadgetID() = 1
            ;SetGadgetState(1,image.l)
            ;DisableGadget(1,1)
         EndIf
      EndIf
   Until ev.l=#PB_Event_CloseWindow
EndIf

End
Benutzeravatar
Hroudtwolf
Beiträge: 1416
Registriert: 30.10.2004 23:33
Kontaktdaten:

Beitrag von Hroudtwolf »

Hat zwar was mit Hoverbuttons zu tun aber da hab ich ein paar Beispiele gemacht wie man die Buttons selbst zaubern kann.
Kannst ja statt einem ImageButton eine ImageGadget nutzen.
pickelrobert
Beiträge: 207
Registriert: 09.12.2004 22:09

Beitrag von pickelrobert »

Versteh ich nicht. So soll's aussehen:

Bild

Wie erreiche ich das ?
Zuletzt geändert von pickelrobert am 22.01.2006 21:36, insgesamt 1-mal geändert.
Benutzeravatar
Hroudtwolf
Beiträge: 1416
Registriert: 30.10.2004 23:33
Kontaktdaten:

Beitrag von Hroudtwolf »

Du erstellt einen eigenen ImageButton auf einem ImageGadget.
Die symbolische Inaktivität erreichst du in dem du erst eine graue Schrift auf Image zeichnest und versetzt (x-1 y-1) eine weisse Schrift drüber zeichnest.
pickelrobert
Beiträge: 207
Registriert: 09.12.2004 22:09

Beitrag von pickelrobert »

... mußte gerade feststellen: unter LINUX ist der Aufwand noch größer ! Schade. Werde meine Projektportierung vorerst auf Eis legen...

Trotzdem - Danke für alle Antworten.
Antworten