Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

unterbrochene Linie

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
triti



Anmeldungsdatum: 23.04.2009
Beiträge: 44

BeitragVerfasst am: 14.01.2011, 23:54    Titel: unterbrochene Linie Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 15.01.2011, 00:00    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
triti



Anmeldungsdatum: 23.04.2009
Beiträge: 44

BeitragVerfasst am: 15.01.2011, 00:11    Titel: Antworten mit Zitat

Aha. Bis das bei mir funktioniert.... da ist berechnen besser. Ist auch nicht zeitkritisch. Nur eine Maske am Anfang.
Danke.

lg
Triti
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 15.01.2011, 00:23    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 15.01.2011, 00:51    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 15.01.2011, 17:37    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz