Buchempfehlung
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Umfassend, aber leicht verständlich führt dieses Buch in die Programmierung von ATMEL AVR Mikrocontrollern ein. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Tutorial

Arbeiten mit Grafik-Befehlen

von RedakteurytwinkySeite 4 von 7

Was ist denn schiefgegangen? Wir haben zwar neue Farben gesetzt, aber die gelten erst für neue Ausgaben. Dem können wir aber mit dem Befehl Cls abhelfen, denn dieser 'Ausgabe'-Befehl setzt alle Pixel auf die gewählte Hintergrundfarbe. Erstmal einbauen(am besten nach dem Color-Befehl und vor der ersten Ausgabe). Und ausprobieren..
Nun gut, ein wenig besser ist es ja geworden..
Aber der Line-Befehl zeichnet ja durch die Kreise hindurch? Das ist ja auch ganz richtig, denn der Line-Befehl verbindet die Mittelpunkte der Kreise. Mit Formeln aus der Mathematik/Vermessungswesen läßt sich aber ohne Probleme der Schnittpunkt zwischen Gerade und Kreis berechnen und dann müßten wir nur noch die berechneten Punkte miteinander verbinden und fertig^^
So kompliziert ist das? Jein, denn diese Berechnung wäre zwar möglich, aber durch die zusätzlichen Punkte und Funktionen erhöht sich nicht nur der Platzbedarf, es sinkt auch die Ausführungsgeschwindigkeit. Programmierer sind aber auch faule Menschen, in dem Sinne, daß sie sich das Leben gerne einfacher machen. Wir zeichnen einfach die Gerade und dann die Kreise..
Das haben wir doch eben auch gemacht? Ja, wir haben aber erst die Kreise gezeichnet und dann die Gerade!
Und damit die störenden Linienelement entfernt werden(ohne komplizierte Berechnungen), zeichnen wir die Kreise einfach zweifach.
Einmal gefüllt(mit der Hintergrundfarbe) und danach normal in der gewünschten Farbe:

#define auf ,
#define voll ,,,F
Const Res800x600=19, Schwarz=0, Blau=1, Rot=4, Weiss=7, Radius=3 'Halbmesser für die Kreise

Type Punkt 'wir definieren einen neuen Typ mit unseren Eigenschaften
  As Integer x, y 'diese beiden Werte legen einen Punkt fest
End Type '..so, fertig ist der Typ^^

Dim As Integer x, y, ScreenWidth, ScreenHeight 'Passende Variablen deklarieren
Dim As Punkt P1, P2 'die Koordinaten dafür denken wir uns aus..
P1.x=370
P1.y=250
P2.x=470
P2.y=350
Screen Res800x600 'Dank sinnvoller Belegung wissen wir, welche Dimension der Bildschirm hat
Color Schwarz auf Weiss
Cls
ScreenInfo ScreenWidth, ScreenHeight 'Auflösung holen, damit FB das auch weiß..
Line (P1.x, P1.y)-(P2.x, P2.y), Blau
Circle (P1.x, P1.y), Radius, Weiss, voll
Circle (P1.x, P1.y), Radius, Rot
Circle (P2.x, P2.y), Radius, Weiss, voll
Circle (P2.x, P2.y), Radius, Rot
?"Eniki.."; 'Aufforderung, eine Taste zu drücken..
Sleep 'und warten..
End '..und fertich ^^

Na bitte, Brigitte, es geht doch xD
Es fehlt jetzt noch die Beschriftung der Punkte. Die ließe sich mittels Locate/Print auch 'wunderbar' einfügen, wenn dieses Gespann(Locate/Print) nicht einen Nachteil hätte: Es lassen sich keine Grafikkoordinaten verwenden, wir könnten die Beschriftung lediglich zeichengenau(also nur ungefähr) anbringen. Aber es gibt ja den Befehl 'Draw String' *nachschlag*
Die Befehle

DRAW STRING (363, 230), "P1"
DRAW STRING (463, 355), "P2"

könnten das erledigen. Konjunktiv(Möglichkeits(!!)form) deshalb, weil wir diese Befehle selbstverständlich nicht benutzen^^
Sollten wir jemals die Koordinaten der Punkte ändern, müßten wir auch die Ausgabepositionen ändern und das ist zuviel Aufwand. Einfacher wäre es, die Beschriftung abhängig von der Grafikposition anzubringen. Na, das ist ja nun wirklich kein Problem mehr

DRAW STRING (P1.x-7, P1.y-20), "P1"
DRAW STRING (P2.x-7, P2.y+5), "P2"

So sieht es doch ganz schick aus, oder?

 

Gehe zu Seite Gehe zu Seite  1  2  3  4  5  6  7  
Zusätzliche Informationen und Funktionen
  • Das Tutorial wurde am 09.08.2007 von Redakteurytwinky angelegt.
  • Die aktuellste Version wurde am 11.08.2007 von Redakteurytwinky gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen