 |
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 |
triti
Anmeldungsdatum: 23.04.2009 Beiträge: 44
|
Verfasst am: 14.01.2011, 23:54 Titel: unterbrochene Linie |
|
|
Hallo!
Wenn ich schreibe
Screen 12
COLOR 4: LINE (95, 350)-(600, 350)
wird ein Strich gezeichnet.
Ich möchte aber dass nur bei jedem z.B. 5 Pixel ein Punkt gezeichnet wird.
Also so: . . . . . . . . . . . . .
Wie tut man da am einfachsten?
lg
Triti |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 15.01.2011, 00:00 Titel: |
|
|
Hallo,
die AK-Lib (AKs VESA-SVGA-Lib für QB) hatte eine XLINE-Funktion, der man einen Muster-String übergeben konnte, wenn ich das richtig in Erinnerung habe. So ließen sich gestrichelte oder gepunktete Linien zeichnen. Da ich aber seit Jahren so gut wie gar nicht mehr mit QB programmiere, weiß ich nicht mehr genau, wie das funktionierte.
Die Methode hätte auf jeden Fall den Nachteil, dass du eine externe Lib bräuchtest (QB /L NameDerLib), da die AK-Lib leider nicht quelloffen ist.
Alternativ könntest du die Pixel der gepunkteten Linie natürlich auch selbst berechnen. Ich könnte mir aber vorstellen, dass das ziemlich langsam sein wird, die gepunktete Linie "manuell" mit PSET o. ä. zu zeichnen. Die AK-Lib hingegen war relativ flott, weil sie mit Assemblercode optimiert war.
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
 |
triti
Anmeldungsdatum: 23.04.2009 Beiträge: 44
|
Verfasst am: 15.01.2011, 00:11 Titel: |
|
|
Aha. Bis das bei mir funktioniert.... da ist berechnen besser. Ist auch nicht zeitkritisch. Nur eine Maske am Anfang.
Danke.
lg
Triti |
|
Nach oben |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 15.01.2011, 00:23 Titel: |
|
|
Hallo
Wenn es nicht schnell sein muss, die Linie waagerecht verläuft und ihre Länge ein ganzzahliges Vielfaches des Punktabstands + 1 ist, dann vielleicht so:
Code: |
SCREEN 12
FOR x = 95 TO 600 STEP 5
PSET (x, 350), 4
NEXT |
Gruß
Skilltronic _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 15.01.2011, 00:51 Titel: |
|
|
Nicht mit Kanonen auf Spatzen schießen!
http://www.freebasic-portal.de/befehlsreferenz/line-grafik-332.html
Zitat: | 'Stil' ist eine 16-bit-Maske, die den Stil der Linie festlegt. "Stil der Linie" bedeutet, auf welche Art die Linie gestrichelt gezeichnet werden soll. Für jedes gesetzte Bit der Maske wird ein Pixel gezeichnet. Wird Stil ausgelassen, nimmt FreeBASIC 65535 (entspricht &b1111111111111111) an, was eine Volllinie zeichnet. |
Damit das gleichmäßig aussieht, sollte die Periode des Musters halt ein Teiler von 16 sein, z.B. &B1000100010001000 = &H8888 für ein Muster, bei dem jeder vierte Pixel gezeichnet wird.
Der Befehl ist in QBasic identisch zu FreeBASIC (daher auch die Limitierung auf 16 Bit), nur kann dort nicht die bequeme Binärnotation (&B...) benutzt werden => vorher in Hex oder Dezimal (igitt) umrechnen. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 15.01.2011, 17:37 Titel: |
|
|
Zunächst, damit wir alles hier beim richtigen Begriff nennen:
http://de.wikipedia.org/wiki/Technisches_Zeichnen#Linienarten
Hinweis: Maschinenzeichner war halt früher mein erster Beruf vor dem Informatikstudium! :-)
Zum Thema selber: In QB gibt es sonst als Bordmittel den berümten 4.-Parameter (1. Parameter=Koordinaten in ()-()-Syntax, 2. Paremeter = Farbe, 3. Parameter = B/BF) beim LINE-Befehl, wo ein 16-Bit-Integer mitgegeben werden kann, der als Bitmuster umgesetzt wird (Periodizität 16 Pixel). -> Qualität am besten mit einer kleinen "Sonne" testen:
http://beilagen.dreael.ch/QB/LIN_ART.BAS
Defaultwert in QB ist &HFFFF, also durchgezogene Volllinie.
Wenn das Linienmuster dagegen CAD-Qualität aufweisen sollte (der QB-Parameter ist nur ein reiner Integer-Algorithmus!), dann führt eigentlich kein Weg an einer geeigneten SUB-Routine vorbei (alles als Fliesskomma-Berechnungen!), welcher man dafür mit Hilfe der Winkelparameter auch für CIRCLE umsetzen kann, denn dort gibt es diesen Bitmuster-Parameter nämlich nicht! _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
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.
|
|