Schrift nach bestimmter länge abschneiden
Übersicht BlitzBasic Beginners-Corner
Freak123Betreff: Schrift nach bestimmter länge abschneiden |
Sa, Jan 14, 2012 14:07 Antworten mit Zitat |
|
---|---|---|
Ich habe versucht eine Laufschrift zu programmieren.
Leider schaffe ich es nicht den Text nach dem bestimmten Bereich abzuschneiden. Gibt es denn keine Möglichkeit die Zeichen, die in einen Bereich passen, zu berechnen? Mein aktueller Stand: Code: [AUSKLAPPEN] Graphics 1024,768,32,2 SetBuffer BackBuffer() Local tex$="-----" For i=0 To 15 tex$=tex$+"hallo" Next Local dx=0, tex2$=tex$ Const speed=2 Local timer=CreateTimer(60) Repeat Rect 100,100,400,30,0 Text 120-dx,115-StringHeight(tex2$)*0.5,tex2$ If dx>StringWidth(Left(tex2$,1)) Then tex2$=Mid(tex2$,2,-1) : dx=0 dx=dx+speed If StringWidth(tex2$)<360 Then dx=0 : tex2$=tex$ Flip WaitTimer timer Cls Until KeyHit(1) EndGraphics End Hatte vor sie in meinen MP3Player einzubauen.(für überlange Titel) lg Freak |
||
ZEVS |
Sa, Jan 14, 2012 14:10 Antworten mit Zitat |
|
---|---|---|
Du kannst in einer Schleife mit Left immer größer werdende Stücke des Strings auslesen und mit StringWidth überprüfen, ob diese noch hineinpassen. Vielleicht tut es aber auch ein Viewport...
ZEVS |
||
XeresModerator |
Sa, Jan 14, 2012 14:11 Antworten mit Zitat |
|
---|---|---|
Sicherlich ist das möglich... erfordert nur eine passende Funktion. Was versuchst du denn da genau zu machen? | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Freak123 |
Sa, Jan 14, 2012 14:16 Antworten mit Zitat |
|
---|---|---|
Ziel war es eine Funktion zu schreiben, die einen Text in einem dafür zugewiesenen Platz ausgiebt.
@ZEVS: Die Idee ist gut, aber ist es die einzige Möglichkeit eine Schleife zu benutzen? Der Text wird ja jeden Durchlauf gezeichnet(jedes mal Schleifen durchlauf) Zum Viewport: Ich benutze ja nur 2D. lg |
||
ZEVS |
Sa, Jan 14, 2012 14:18 Antworten mit Zitat |
|
---|---|---|
Viewport und 2d schließen sich nicht aus (nicht verwechseln mit CameraViewport). Die Anzahl an Zeichen kannst du einmal ausrechnen und in einer Variablen speichern.
ZEVS |
||
XeresModerator |
Sa, Jan 14, 2012 14:22 Antworten mit Zitat |
|
---|---|---|
Mit Viewport kann man sich alle Berechnungen sparen: einfach 2x Zeichnen. Einmal sieht man den vorderen, einmal den hinteren Teil. | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Freak123 |
Sa, Jan 14, 2012 14:43 Antworten mit Zitat |
|
---|---|---|
Danke.
Habs so gelöst: Code: [AUSKLAPPEN] Graphics 1024,768,32,2
SetBuffer BackBuffer() Local x=100 Local y=100 Local w=400 Local h=30 Local dx=0 Local tex$="Langer Lauftext: " For i=0 To 15 tex$=tex$+"hallo" Next Local timer=CreateTimer(60) Repeat Viewport 0,0,GraphicsWidth(),GraphicsHeight() Text 0,0,"Ein anderer Text" ;Scrollbar Viewport x,y,w,h Rect x,y,w,h,0 Text x-dx,y+h*0.5-StringHeight(tex$)*0.5,tex$ dx=dx+1 If dx>StringWidth(tex$)-w Then dx=0 Flip WaitTimer timer Cls Until KeyHit(1) End Vielen dank! Man bisher relativ wenig zum thema Laufschrift. Trotzdem. Ist das nicht lamgsam? Bei dem Minniprogramm merkt mans ja nicht. lg freak |
||
ZEVS |
Sa, Jan 14, 2012 14:45 Antworten mit Zitat |
|
---|---|---|
Zitat: Man bisher relativ wenig zum thema Laufschrift. Trotzdem. Ist das nicht lamgsam? Bei dem Minniprogramm merkt mans ja nicht. Schreibst du, um gelesen zu werden? ZEVS |
||
Seven |
Sa, Jan 14, 2012 14:48 Antworten mit Zitat |
|
---|---|---|
Kleine Anmerkung:
Vor Flip fehlt die 0. EDIT: Ich meinte natürlich hinter Flip |
||
- Zuletzt bearbeitet von Seven am Sa, Jan 14, 2012 15:26, insgesamt einmal bearbeitet
hazumu-kun |
Sa, Jan 14, 2012 15:05 Antworten mit Zitat |
|
---|---|---|
Du kannst auch ein Bild erzeugen, dass der Größe deines Laufschrift-Anzeigebereichs entspricht, und über den Imagebuffer in das Bild zeichnen.
Das Abschneiden ergibt sich dann automatisch daraus, dass, wenn du über den Imagebuffer hinaus zeichnest, sich am Bild nichts ändert. Am Ende musst du dann nurnoch das Bild an beliebiger Position zeichnen. (Vorher wieder Setbuffer Backbuffer ) P.S.: Zu erwähnen währe, dass Die Write- / Readpixelfast-Befehle Speicherzugriffsverletzungen erzeugen, wenn man in einem gelocktem Imagebuffer über die Dimensionen hinaus zu zeichnen versucht. Seven hat Folgendes geschrieben: Kleine Anmerkung:
Vor Flip fehlt die 0. HINTER Flip fehlt die 0. |
||
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann -> nicht omnipotent |
- Zuletzt bearbeitet von hazumu-kun am Sa, Jan 14, 2012 15:08, insgesamt einmal bearbeitet
XeresModerator |
Sa, Jan 14, 2012 15:08 Antworten mit Zitat |
|
---|---|---|
Unsinn. Genau dafür gibt es Viewport. | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
hazumu-kun |
Sa, Jan 14, 2012 15:10 Antworten mit Zitat |
|
---|---|---|
Xeres hat Folgendes geschrieben: Unsinn. Genau dafür gibt es Viewport.
Ob meine Lösung sinnig ist, habe ich ja nicht behauptet. Aber müsste man nicht für die selbe Laufschrift an verschiedenen Positionen das gesammte Spielchen zweimal mit unterschiedlichem Viewport machen? Ich hätte da ein Bild als Zwischenspeicher benutzt... |
||
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann -> nicht omnipotent |
Freak123 |
Sa, Jan 14, 2012 15:42 Antworten mit Zitat |
|
---|---|---|
Ich werde trotzdem bbei der Lösung mit den Viewports bleiben, da ich eventuell
auch die Geschwindigkeit der laufschriften, pro laufschrift extra einstellen möchte. Hier würde die Lösung mit den Images nur unnötig Speicher fressen, weil ich dann sowieso für jede Laufschrift ein eigenes Bild bräuchte. In den seltensten Fällen braucht man eine Laufschrift doppelt, es sei denn programmiert die Werbung rund um ein Fußballfeld. lg freak |
||
Hubsi |
Sa, Jan 14, 2012 17:17 Antworten mit Zitat |
|
---|---|---|
hazumu-kun hat Folgendes geschrieben: Aber müsste man nicht für die selbe Laufschrift an verschiedenen Positionen das gesammte Spielchen zweimal mit unterschiedlichem Viewport machen?
Nein. Erst wird das Spiel an sich gemalt, dann ein Viewport festgelegt und der Schriftkram reingeballert.Zum Schluss den Viewport wieder auf normal stellen, fetig |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
hazumu-kun |
Sa, Jan 14, 2012 23:20 Antworten mit Zitat |
|
---|---|---|
Du hast nicht verstanden was ich meinte. Ich meinte zweimal die exakt selbe Laufschrift, nicht zweimal das gesammten Spiel. Tut mir Leid wenn meine Formulierung dich da in die Irre geleitet hat. | ||
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann -> nicht omnipotent |
Übersicht BlitzBasic Beginners-Corner
Powered by phpBB © 2001 - 2006, phpBB Group