Funktion zum Button Generieren

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Neoxit

Betreff: Funktion zum Button Generieren

BeitragMo, Nov 05, 2007 19:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich habe mir längere Zeit mal über eine Funktion zum generieren von Buttons gedanken gemacht.

Ich bin bis jetzt auf keine Lösung gekommen, und dachte das evtl. einer von euch schon eine solche Funktion geschrieben hat.

Man sollte eine grafik für dieses Button einfügen die sich je nach Länge des Buttontextest anfügt.
Dieser Text sollte immer Mittig dieses Buttons stehen.

habt ihr ne idee? oder schon solch eine Funktion ? Habe über suche nichts gefunden... =(

MfG

Neoxit

mahe

BeitragMo, Nov 05, 2007 19:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Du brauchst lediglich eine linke und rechte Abschlussgrafik sowie eine Füllgrafik (Mitte) welche Du je nach Platzbedarf streckst.
ʇɹǝıdɯnɹɹoʞ ɹnʇɐuƃıs - ǝpoɥʇǝɯ-ɹoɹɹıɯ ɹǝp uı ,ɹoɹɹǝ,

Neoxit

BeitragMo, Nov 05, 2007 20:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Jop, des habe ich mir auch schon gedacht, nur womit überprüfe ich wie lang die Buchstaben sind usw.

naja ich schau mal was ich machn kann thx soweit

Neoxit

BeitragMo, Nov 05, 2007 21:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Sooo ich habs jetzt Testweise erstmal in B3D geschrieben (Thema bitte nicht verschieben, weil ich es später für BMax umschreibe)

also so sieht es derzeitig aus:

Code: [AUSKLAPPEN]


Graphics 800,600,32
SetBuffer BackBuffer()


Global links = LoadImage("links.jpg")
Global rechts= LoadImage("rechts.jpg")
Global mitte = LoadImage("mitte.jpg")



Repeat
Cls

Button(100,100,"TestTestTest")



Flip
Until KeyHit(1) End


Function Button(x,y,txt$)
anzahl = Len(txt$)
mitten = (anzahl/5+1)

Text 0,0,anzahl
Text 0,15, mitten

DrawImage links,x,y
For i = 1 To mitten
   DrawImage mitte,(x+6),y
Next



Text (x+6),(y+8),txt$
End Function



Nun hänge ich allerdings an dem Problem, wie er mir die Grafiken aneinander reiht...
Mit Types wäre es meiner Meinung viel zu kompliziert und Speicherbratent...

Also habt ihr ne Lösung für das Prob?

BladeRunner

Moderator

BeitragMo, Nov 05, 2007 21:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Types wären der Goldweg, noch dazu wo sie unter BMax vollwertige Klassen sind.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Dreamora

BeitragMo, Nov 05, 2007 21:20
Antworten mit Zitat
Benutzer-Profile anzeigen
In BlitzMax ist die nutzung von Types nicht optional sondern pflicht.
Wenn du mit Int Handles arbeiten willst, weil es einfacher ist, dann bleib bei Blitz3D. In BlitzMax hast du damit performance einbrüche von 50% und mehr, denn BM nutzt intern kein Typehandles wie Blitz3D sondern typesichere Referenzen
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

mahe

BeitragMo, Nov 05, 2007 21:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Was soll er da überhaupt mit Types (welche auch immer)?

Function DrawButton(x,y,text)
* Das linke Bild zeichnen
* Mit schöner Schleife (for bietet sich an) das mittlere wiederholt zeichnen
* Das rechte Bild zeichnen
* Den Text drauf schreiben
EndFunction
ʇɹǝıdɯnɹɹoʞ ɹnʇɐuƃıs - ǝpoɥʇǝɯ-ɹoɹɹıɯ ɹǝp uı ,ɹoɹɹǝ,

Neoxit

BeitragMo, Nov 05, 2007 21:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay , bin gerade fertig geworden ^^ man hier kommt ja eine antwort auf die nächste xD also ich habs nun s o gemacht:

Code: [AUSKLAPPEN]


Graphics 800,600,32,1
SetBuffer BackBuffer()


Global links = LoadImage("links.jpg")
Global rechts= LoadImage("rechts.jpg")
Global mitte = LoadImage("mittee.jpg")

Global gelb = LoadImage("gelb.jpg")
Global rot  = LoadImage("rot.jpg")

Global cursor = LoadImage("cursor.jpg")

Repeat
Cls
maus_x = MouseX()
maus_y = MouseY()





DrawImage gelb,100,100
DrawImage rot,450,230

If ImagesCollide(cursor,maus_x,maus_y,0,gelb,100,100,0) Then CreatePopupText((maus_x+20),(maus_y+20),"Dies ist die Farbe Gelb ;) Ist das nicht eine Schöne Farbe?",32,6)
If ImagesCollide(cursor,maus_x,maus_y,0,rot,450,230,0) Then CreatePopupText((maus_x+20),(maus_y+20),"Dies ist eine Rote Farbe o.O",32,6)

DrawImage cursor,maus_x,maus_y
Flip
Until KeyHit(1) End








Function CreatePopupText(x,y,txt$,m_laenge,l_laenge)
anzahl = Len(txt$)
mitten = (anzahl/4+1)

x_mitten = x

Text 0,0,anzahl
Text 0,15, mitten

DrawImage links,x,y
For i = 1 To mitten
   DrawImage mitte,(x_mitten+l_laenge),y
   x_mitten = x_mitten + m_laenge
Next
DrawImage rechts,x_mitten,y


Text (x+l_laenge),(y+8),txt$
End Function




funzt super Wink


[EDIT]

Ist zwar nun kein Button mehr, aber daraus kann man sichs ja ableiten Wink
Aber super für nen PopUp text ^^ werde mich nun noch um Zeilenumbrüche kümmern
d.h. ich muss das bild in 9 teile hauen wenn ich mich nich recht irre ^^

BladeRunner

Moderator

BeitragMo, Nov 05, 2007 21:54
Antworten mit Zitat
Benutzer-Profile anzeigen
mahe hat Folgendes geschrieben:
Was soll er da überhaupt mit Types (welche auch immer)?

Function DrawButton(x,y,text)
* Das linke Bild zeichnen
* Mit schöner Schleife (for bietet sich an) das mittlere wiederholt zeichnen
* Das rechte Bild zeichnen
* Den Text drauf schreiben
EndFunction

Types deshalb weil er vielleicht ja mehrere Buttons will und die auch handlen mag. Da bieten sich Methoden im Type gradezu an.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

mahe

BeitragMo, Nov 05, 2007 22:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Asso, dann natürlich.

Ab so weit waren wir ja noch nicht Wink
ʇɹǝıdɯnɹɹoʞ ɹnʇɐuƃıs - ǝpoɥʇǝɯ-ɹoɹɹıɯ ɹǝp uı ,ɹoɹɹǝ,

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group