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 3 von 7

Der Line-Befehl
Wir haben zwar zwei Punkte definiert, aber nicht programmiert, was damit nun passieren soll..
Wir wollen eine Gerade vom AnfangsPunkt zum EndPunkt zeichnen, das hilft uns erstmal nicht weiter, da FreeBASIC nur englische Befehle kennt. 'Gerade' ist im Englischen, genau genug, 'Line' und das können wir in der Befehlsreferenz ja nachschlagen ;-))
(Benutzer von IDE's sind hier im Vorteil, da dort ein direkter Zugriff möglich ist, ansonsten sollte sie in einem Extra-Fenster sein oder als Verknüpfung auf dem Desktop)

LINE [Puffer,] [[STEP] (x1, y1)]-[STEP] (x2, y2)[, [Farbe][, [B|BF][, Stil]]]

Die Parameter sind dort ausführlich beschrieben, deshalb können wir uns hier auf das Wesentliche beschränken:

LINE (AnfangsPunkt.x, AnfangsPunkt.y)-(EndPunkt.x, EndPunkt.y), Rot

Das bauen wir in den QuellCode vor der Sleep-Anweisung ein und können nun das Ergebnis bestaunen:Oh, wie schön!
Wir sehen tatsächlich eine rote Gerade, die offensichtlich zum Mittelpunkt führt, messerscharf geschlossen:Dann muß der andere Punkt der Anfangspunkt sein!
Dies Ergebnis halten wir mal fest:Egal in welchem Grafikmodus wir uns befinden, die Ecke linksoben hat immer die Koordinaten 0 und 0(Im Unterschied zum Textmodus, denn dort hat die Ecke linksoben die Werte 1 und 1).
Wie schon in der Referenz steht, hätten wir mit dem optionalen Parameter B ein Rechteck, bzw mit dem Parameter BF ein ausgefülltes Rechteck gezeichnet.
Der PSet-Befehl
Einen einzelnen Punkt zu zeichnen ist dagegen viel einfacher. Nach Zuhilfenahme der Befehlsreferenz wissen wir nun, daß dies mit z.B.

PSet (EndPunkt.x, EndPunkt.y), Rot

möglich ist..
Damit könnten wir z.B. eine ätzend langsame Bildschirmlöschroutine schreiben:

#define auf ,
Const Res800x600=19, Schwarz=0, Blau=1, Weiss=7
Dim As Integer x, y, ScreenWidth, ScreenHeight 'Passende Variablen deklarieren
Screen Res800x600 'Dank sinnvoller Belegung wissen wir, welche Dimension der Bildschirm hat
Color Schwarz auf Weiss
ScreenInfo ScreenWidth, ScreenHeight 'Auflösung holen, damit FB das auch weiß..
For x=0 To ScreenWidth 'von links nach rechts..
  For y=0 To ScreenHeight 'und von oben nach unten..
    PSet (x, y), Blau 'damit man auch was sieht..
  Next irgendetwaskannhierstehen
Next esmussnurzusammengeschriebensein
?"Eniki.."; 'Aufforderung, eine Taste zu drücken..
Sleep 'und warten..
End '..und fertich ^^

Der Circle-Befehl
Der Circle-Befehl macht das, was sein Name vermuten läßt, er zeichnet einen Kreis. Da wir uns aber mit Vermutungen nicht zufrieden geben, schauen wir erstmal in der Befehlsreferenz nach..
Nanu, schon fertig gelesen? Dann kann's ja weitergehen^^
Erstmal die Beispiele ausprobieren..
Rledigt? Naja, es waren ja auch nicht soo viele. Der Vorteil an diesen Grafikbefehlen ist, daß sich alles ausprobieren läßt, ohne den Rechner zu gefährden. Entweder der Rechner zeichnet dort, wo wir wollen oder (schlimmstenfalls) dort, wo wir es ihm gesagt haben ;-))
Das ist nicht nur ein Scherz! Nehmen wir an, der Rechner soll eine Linie von P1(x, y) nach P2(x+10, y) zeichnen. Kurz nachdenken:also von den Koordinaten x und y nach (x+10) und y, um z.B. etwas zu unterstreichen. Wir wissen jetzt, was wir wollen, aber der Rechner würde links oben eine kurze Linie zeichnen, die u.U. schwer zu finden ist, wenn x und y in dem Moment noch keine richtigen Werte haben. Dumm gelaufen, aber er hat's gemacht xD
Dann machen wir es jetzt mal richtig: Wir möchten eine Gerade von einem Punkt zu einem anderen zeichnen, die Punkte sollen mit einem Kreis gekennzeichnet werden:

#define auf ,
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
ScreenInfo ScreenWidth, ScreenHeight 'Auflösung holen, damit FB das auch weiß..
Circle (P1.x, P1.y), Radius, Rot
Circle (P2.x, P2.y), Radius, Rot
Line (P1.x, P1.y)-(P2.x, P2.y), Blau
?"Eniki.."; 'Aufforderung, eine Taste zu drücken..
Sleep 'und warten..
End '..und fertich ^^

Das sieht aber nicht sonderlich gut aus, eher grottenschlecht..

 

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