Referenz - VIEW (Grafik)
Syntax: VIEW [[SCREEN] (x1, y1)-(x2, y2) [,[ Farbe][, Rand]]]
Typ: Anweisung
Kategorie: Grafik
VIEW definiert neue Gültigkeitsbereiche für physische Bildschirmkoordinaten, setzt also neue Clipping-Grenzen.
- Wenn das Argument SCREEN ausgelassen wird, sind alle Koordinaten zukünftiger Grafikanweisungen relativ zur linken oberen Ecke des Darstellungsfeldes anstelle zur linken oberen Ecke des Grafikfensters.
- 'x1', 'y1', 'x2' und 'y2' sind die Koordinaten zweier gegenüberliegender Eckpunkte des neuen Darstellungsfeldes. Sie sind relativ zur linken oberen Ecke des Grafikfensters.
- 'Farbe' ist eine Farbnummer, mit welcher der angegebene Bereich ausgefüllt werden soll. Wird dieser Parameter ausgelassen, bleibt die alte Grafik in diesem Bereich erhalten.
- 'Rand' ist eine Farbnummer, in der ein Rahmen um den angegebenen Bereich gezeichnet werden soll. Wird dieser Parameter ausgelassen, wird kein Rahmen gezeichnet.
VIEW wird benutzt, um neue Clipping-Grenzen zu setzen und damit ein neues Darstellungsfeld festzulegen. Ein neu definiertes Darstellungsfeld ersetzt ein eventuell bereits bestehendes. VIEW hat nur im Grafikfenster eine Auswirkung.
Alle Drawing Primitives sind von der Größe des Darstellungsfeldes abhängig; Grafikanweisungen, die auf Koordinaten außerhalb dieser Grenzen verweisen, haben keine Auswirkungen.
Farben müssen im selben Format angegeben werden wie bei COLOR (Anweisung). Sie sind abhängig von der Farbtiefe, die mit SCREENRES eingestellt wurde.
Wenn alle Argumente ausgelassen werden, setzt VIEW alle Grenzen auf den Standard zurück.
Beispiel:
Screenres 640, 480
Dim bild As Any Ptr
Dim As Integer i, j, k
' einfaches Sprite erstellen
bild = ImageCreate(64, 64)
For i = 0 To 63 : For j = 0 To 63
PSet bild, (i,j), (i\4) Xor (j\4)
Next j, i
' blaues Kreuz zur Demonstration:
' Der Bereich außerhalb der Clipping-Grenzen ist später nicht mehr betroffen
line (0, 0)-(639, 479), 1
line (639, 0)-(0, 479), 1
' Clipping-Grenzen setzen, mit blauem Rand
View (220,140)-(420,340),, 1
' Sprite bewegen
k = 0
Do
i = 100* Sin(k*.02)+50
j = 100* Sin(k*.027)+50
ScreenSync
ScreenLock
Cls 1 ' löscht nur das Darstellungsfeld
Put (i, j), bild, PSet
ScreenUnlock
k += 1
Loop Until Len(Inkey)
ImageDestroy bild
Unterschiede zu früheren Versionen von FreeBASIC:
In Versionen vor v0.16 hatte der Parameter 'Rand' keine Auswirkungen.
Unterschiede zu QB:
- QB behält die Koordinatentransformationen mittels WINDOW auch bei einer Größenänderung des Clipping-Bereichs in gleicher Form bei.
- FreeBASIC behält derzeit die Eckkoordinaten bei, wodurch sich die Koordinatentransformation ändert. Dieses Verhalten wird möglicherweise in einer zukünftigen Compilerversion geändert. Derzeit muss jedoch erneut WINDOW mit entsprechenden Parametern aufgerufen werden, um z. B. nach einem VIEW die vorherige Koordinatentransformation in gleicher Form beizubehalten. Andernfalls wird der Koordinatenbereich eventuell verschoben oder skaliert.
Siehe auch:
VIEW (Text), SCREENRES, WINDOW, PMAP, Grafik
Zusätzliche Informationen und Funktionen | ||||
---|---|---|---|---|
|