Zurück zur Übersicht

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 )

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

ProgressBar

Bearbeiten

StatusBar

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.