Seite 1 von 1
Buttonimagegadget beschriften ?
Verfasst: 19.01.2006 14:57
von pickelrobert
Hallo,
wie versehe ich das Buttonimagegadget mit zusätzlicher Schrift unter dem Bildchen unter Windows und Linux ?
Danke und Gruß
Re: Buttonimagegadget beschriften ?
Verfasst: 19.01.2006 20:52
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.
Verfasst: 20.01.2006 13:29
von Dr.Pixel
Und wo ist die Lib zu finden?
Würde ich gerne einmal ausprobieren!
mfg
Dr. Pixel
Verfasst: 21.01.2006 16:54
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.
Verfasst: 21.01.2006 17:28
von Hroudtwolf
Verfasst: 21.01.2006 22:36
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
Verfasst: 22.01.2006 01:31
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.
Verfasst: 22.01.2006 21:03
von pickelrobert
Versteh ich nicht. So soll's aussehen:
Wie erreiche ich das ?
Verfasst: 22.01.2006 21:09
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.
Verfasst: 22.01.2006 23:43
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.