BlitzMax: Module (alt)
Module
[Bearbeiten]Max2D
[Bearbeiten]Bilder zeichnen
[Bearbeiten]Ein Bild wird mit dem Befehl DrawImage auf den Bildschirm gezeichnet:
DrawImage( Bild:TImage, x:Int, y:Int, Frame:Int )
Rechtecke
[Bearbeiten]Um ein Rechteck zu zeichnen benutzt man den Befehl DrawRect. Als Parameter werden die Position (x,y), die Breite und ebenso die Höhe benötigt.
DrawRect( x:Int, y:Int, width:Int, height:Int )
Kreise
[Bearbeiten]DrawOval zeichnet einen Kreis. Die Parameter sind dieselben wie bei DrawRect.
DrawOval( x:Int, y:Int, width:Int, height:Int )
Text zeichnen
[Bearbeiten]Der zu zeichnende Text ist der erste Parameter, die Position folgt danach.
DrawText( text:String, x:Int, y:Int )
Einsatz von Blenden
[Bearbeiten]In Blitz Max ist es möglich, Blenden zu nutzen. Die zu verwendende Blende setzt man mit SetBlend
SetBlend( blend:Int )
Folgende Parameter kann man für diese Funktion verwenden:
- SOLIDBLEND (Pixel überschreiben BackBuffer)
- MASKBLEND (Pixel werden nur gezeichnet, wenn ihr Alpha-Wert größer als 0.5 ist)
- ALPHABLEND (Pixel werden mit einer Transparenz (Alpha-Wert) in den BackBuffer gezeichnet)
- LIGHTBLEND (Pixel werden mit dem BackBuffer additiv gemischt)
- SHADEBLEND (Pixel werden mit dem BackBuffer multiplikativ gemischt)
MaxGUI
[Bearbeiten]MaxGUI ist ein Modul, das man sich zusätzlich zu BMax anschaffen kann. Damit ist es möglich, grafische Benutzeroberflächen (GUI - Graphical User Interface) zu entwickeln, die auf Windows, Linux und Macintosh laufen.
Fenster erstellen
[Bearbeiten]Um ein Fenster zu erstellen muss man die Funktion CreateWindow benutzen. Ihr kann man 7 Parameter übergeben, wovon nur 5 nötig sind:
CreateWindow:TGadget( name:String, x:Int, y:Int, width:Int, height:Int, gruppe:TGadget=Null, style:Int=15 )
- Der Name des Fensters
- Die x-Postion
- Die y-Position
- Die Breite
- Die Höhe
- Zugehörige Gruppe (optional, sonst NULL)
- Eigenschaften des Fensters (mehrere Eigenschaften werden durch einen vertikalen Strich getrennt)
- WINDOW_TITLEBAR (Titelleiste)
- WINDOW_RESIZABLE (Benutzer kann das Fenster vergrößern)
- WINDOW_MENU (Das Fenster hat ein Menü)
- WINDOW_STATUS (Das Fenster hat eine Statusbar)
- WINDOW_TOOL ((Das Fenster hat eine reduzierte Titelleiste, nicht bei allen Betriebssystemen)
- WINDOW_CLIENTCOORDS (Koordinaten relativ zur "Client-Area", nicht zum Fenster)
- WINDOW_HIDDEN (Das Fenster ist versteckt)
- WINDOW_ACCEPTFILES (Drag and Drop aktiv)
Hier ist ein kleines Beispiel für ein leeres MaxGUI-Projekt:
'Variable als TGadget definieren Local window:TGadget 'Fenster erstellen window:TGadget = CreateWindow("Mein Fenster", 0, 0, 640, 480) 'Event Handler: Hier werden alle Ereignisse bearbeitet While True WaitEvent 'Jedes Ereignis hat eine ID, die beim Eintritt dieses Ereignisses in EventID() steht Select EventID() Case EVENT_WINDOWCLOSE End End Select Wend
Menü
[Bearbeiten]Toolbar
[Bearbeiten]ProgressBar
[Bearbeiten]StatusBar
[Bearbeiten]Audio
[Bearbeiten]Streams
[Bearbeiten]Ein Stream ist ein Datenstrom, von dem man Daten lesen und schreiben kann.
Read-Stream
[Bearbeiten]Einen Stream zum Lesen von Dateien erstellt man mit ReadStream.
ReadStream( url:Object )
Wenn man Daten im Strom auslesen will, muss man je nach Kontext eine andere Funktion wählen:
- ReadByte
- ReadShort
- ReadInt
- ReadLong
- ReadString
- ReadLine
Möchte man wissen, ob man das Ende einer Datei erreicht hat,nimmt man die Funktion Eof.
Eof( stream:TStream )
Einen Stream muss man am Ende wieder schließen, dafür wählt man die Funktion CloseStream.
CloseStream( stream:TStream )
Diese Stream-Funktionen wird benötigt, wenn man eine Datei öffnen und ihren Inhalt lesen möchte. Hier ist eine Funktion, welche den Inhalt einer Textdatei ausliest:
Function PrintFile(url:Object) Local stream:TStream stream = ReadStream(url) While Eof(stream)=0 Print ReadLine(stream) Wend CloseStream stream End Function
Write-Stream
[Bearbeiten]Einen Stream zum Schreiben von Dateien erstellt man mit WriteStream.
WriteStream( url:Object )
Wenn man jetzt einzelne Daten schreiben möchte muss einen Befehl je nach Kontext benutzen:
- WriteByte
- WriteShort
- WriteInt
- WriteLong
- WriteString
- WriteLine
Auch hier schleißt man den Stream mit CloseStream.
CloseStream( stream:TStream )
Hier ein kleines Beispiel anhand eines Texteditors der mit der Eingabe <ende> geschlossen werden kann.
Global name:String 'Variable für den Name der Datei definieren. Global text:String 'Variable für den Text definieren. Global ende:Int 'Variable zur MArkierung des Endes definieren. Global schreiben:TStream 'Stream zum Schreiben definieren. name:String = Input( "Name für die Datei:" ) 'Input dür den Name der ... schreiben:TStream = WriteStream( name:String + ".txt" ) '... hier noch mit einem ".txt" versehen wird. Repeat 'Hier beginnt die Schleife. text:String = Input( ">" ) 'Input für den Text. If text:String = "<ende>" Then 'Wenn die Eingabe "<ende>" ist, dann ... ende = True '... ist ende wahr (true). Else 'Wenn nicht dann ... WriteLine( schreiben:TStream, text:String ) '... wird der Text in die Datei geschrieben. EndIf 'Ende der "Wenn ..., Dann ..." Abfrage. Until ende:Int = True 'Wenn "ende" wahr ist, dann wird die Schleife beendet. CloseStream( schreiben:TStream ) 'Wenn die Schleife endet wird der Stream geschlossen ... End '... und das Programm beendet.