|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Muecke Gast
|
Verfasst am: 16.01.2014, 00:27 Titel: Print "Hallo Wold" Pixelgenau auf dem Monitor ausr |
|
|
Hallo miteinander,
mit dem Befehl Print kann ich Text ausgeben
wenn ich schreibe Locate 10, 15: Print "..."
dann wird mein Text ja in Zeile 10 Position 15 ausgegeben da ich den Cursor neu setze bevor ich Print ausgeben lasse.
Meine Frage kann das auch Pixelgenau machen? anstatt Zeile und Position eine x, y Koordinate angebe?
leider habe ich nichts gefunden bisher im Netz
ich arbeite mit: ScreenRes 1024, 600, 32 |
|
Nach oben |
|
|
micha
Anmeldungsdatum: 09.12.2005 Beiträge: 72
|
|
Nach oben |
|
|
Muecke Gast
|
Verfasst am: 16.01.2014, 01:36 Titel: |
|
|
kurz und knapp
danke
das werde ich morgen gleich mal testen.
sieht recht einfach aus |
|
Nach oben |
|
|
Muecke Gast
|
Verfasst am: 16.01.2014, 19:50 Titel: |
|
|
das mit dem "DRAW STRING" ist echt genial
Danke noch mal, hat mir einige Probleme abgenommen
Eins habe ich jedoch noch
beim Befehl Print kann man das Using mit verwenden z.B. so
Code: | Locate 20, 18: Print Using "#####"; Frame_Aktueller |
Der Vorteil hierbei ist wenn ich das aufrufe wird meine Stelle zuerst bereinigt und dann der Neue Wert ausgegeben dazu wird Rechtsbündig geschrieben.
ist es Möglich das Using Prinzip auch beim "DRAW STRING" anzuwenden?
ich dachte z.B. so:
Code: | Draw STRING (235, 570), Using "#####";Frame_Aktueller |
Habe nichts vergleichbares gefunden und bei allen meinen Überlegungen kamen verschiedenste Fehler
Daher meine Frage ist so was Möglich? ohne großen Aufwand?
sonst bleibt es wie es ist
und das wäre so:
Code: |
Line (231, 563) - step(118, 18), Text_BG_Farbe, BF
Draw STRING (235, 570), Str(Frame_Aktueller)
|
|
|
Nach oben |
|
|
MOD Fleißiger Referenzredakteur
Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 16.01.2014, 20:33 Titel: |
|
|
Ich habe sowas gerne gemacht:
Code: |
ScreenRes 500, 200, 32
Dim As Integer aktuellerFrame = 12345
Draw String (10, 80), Str(aktuellerFrame)
Print "Taste druecken, um den Text unten zu ueberschreiben."
Sleep
Draw String (10, 80), String(Len(Str(aktuellerFrame)), Chr(219)), RGB(0, 0, 0)
Print "Taste druecken, um zu beenden."
Sleep
|
Print Using macht nichts weiter, als den Wert zu nehmen und entsprechend zu formatieren. Letztlich belegt er durch die Vorgabe immer die gleiche Anzahl an Zeichen.
Sowas ähnliches macht Format auch:
Code: |
#Include "string.bi"
ScreenRes 500, 200, 32
Dim As Integer aktuellerFrame = 12345
Draw String (10, 80), Format(aktuellerFrame, "#####")
Print "Taste druecken, um den Text unten zu ueberschreiben."
Sleep
Draw String (10, 80), Format(aktuellerFrame, "#####"), RGB(0, 0, 0)
Print "Taste druecken, um zu beenden."
Sleep
|
Geht natürlich nur, wenn du die gleichen Zeichen über die gleiche Position nur mit umgekehrter Farbe schreibst. |
|
Nach oben |
|
|
Muecke Gast
|
Verfasst am: 16.01.2014, 20:50 Titel: |
|
|
hmm, OK, das sieht ganz Interessant aus jedoch wies ich nicht wie mich das weiterbringt.
Referenz - FORMAT hat Folgendes geschrieben: | # = Platzhalter für eine Ziffer. Funktioniert genauso wie 0, erzeugt aber keine führenden Nullen. |
die Ziffer ist nicht Rechtsbündig und somit bei beim Wechsel von 100 zu 99 bleibt die Rechte 0 Stehen
und wenn ich mit dem Befehl zuerst alles Leermasche und dann wider Neu Fülle habe ich mir nichts eingespart?
oder Interpretiere ich hier was Falsch? habe ich was übersehen? |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 16.01.2014, 21:29 Titel: |
|
|
Das ist richtig, FORMAT arbeitet da nicht immer so, wie man erwarten würde (ich denke mal, dass FORMAT da manchmal einfach falsch arbeitet). Wenn es nur um die Rechtsbündigkeit geht, gibt es mehrere Möglichkeiten - angefangen mit so Dingen wie RSET (was ich persönlich für einen sehr irrwitzigen Befehl halte, aber so war der halt in QBASIC eingeführt) bis hin zu eigenen Formatiermethoden. Mal so eine Möglichkeit:
Code: | DIM AS STRING wert = STR(zahl)
IF zahl < 10 THEN
wert = " " & wert
ELSEIF zahl < 100 THEN
wert = " " & wert
ELSEIF zahl < 1000 THEN
wert = " " & wert
END IF |
(arbeitet nicht bei negativen Zahlen!)
Ist wegen der zweimaligen String-Zusammensetzung etwas arbeitsaufwändig; ich berechne mir lieber anhand der Stellenzahl die Bidschirposition, ab der ich den Wert schreiben muss. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
Muecke Gast
|
Verfasst am: 16.01.2014, 22:01 Titel: |
|
|
hmm, OK, das Rechtsbündige ist schon eine sehr schöne und feine Sache
das mit den Stellen Berechnung und dann der Positionierung hört sich gut an da ich den Text Pixel genau ausgebe kann man das recht einfach machen
Danke für den Tipp |
|
Nach oben |
|
|
Haubitze
Anmeldungsdatum: 14.10.2009 Beiträge: 132
|
Verfasst am: 20.01.2014, 22:13 Titel: |
|
|
Hallo,
also ich mache das immer so,
Code: |
DIM AS STRING wert
wert = STR(zahl) & " "
|
und hatte damit bisher nie probleme.
salute |
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2507 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 20.01.2014, 22:57 Titel: |
|
|
Für Ganzzahlen formatieren eignet sich ansonsten so etwas:
Code: | Function ZahlRechtsbuendig(wert As Integer, breite As Integer) As String
Dim h As String
h = Str(wert)
Return Space(breite - Len(h)) + h
End Function |
So etwas hat bereits in QB gut funktioniert. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1211 Wohnort: Ruhrpott
|
Verfasst am: 21.01.2014, 07:47 Titel: |
|
|
Code: | Dim As Integer breite, zahl
Print Right(String(breite," ") + Str(zahl),breite) | funktioniert auch.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|