Sets new physical coordinate mapping and clipping region
Syntax
View
View ( x1, y1 )-( x2, y2 ) [ [, fill_color ] [, border_color ] ]
View Screen ( x1, y1 )-( x2, y2 ) [ [, fill_color ] [, border_color ] ]
Parameters
x1 As Integer,
y1 As Integer
The horizontal and vertical offsets, in pixels, of one corner of the viewport relative to the top-left corner of the screen.
x2 As Integer,
y2 As Integer
The horizontal and vertical offsets, in pixels, of the opposite corner of the viewport relative to the top-left corner of the screen.
fill_color As UInteger
The color to fill the new viewport.
border_color As UInteger
The color of the border to draw around the new viewport.
Description
The
viewport, or clipping region, is a rectangular area of the graphics screen, outside of which no drawing will be done. That is, only drawing done within this area will be shown. A graphics screen must be created with
Screen or
ScreenRes before calling
View or
View Screen.
The first statement sets the viewport to encompass the entire screen, which is the default viewport for a new graphics screen.
The second and third statements both allow a new viewport to be defined. The corners of the viewport are specified by the
x1,
y1,
x2 and
y2 parameters.
fill_color and
border_color are both in the format accepted by
Color. The indicated effects for each parameter only occur if that parameter is specified.
The second statement modifies the co-ordinate mapping of the graphics screen such that co-ordinates specified for drawing statements and procedures are relative to the top-left corner of the viewport.
The third statement modifies the co-ordinate mapping of the graphics screen such that co-ordinates specified for drawing statements and procedures are relative to the top-left corner of the screen.
Example
Screen 12
Dim ip As Integer Ptr
Dim As Integer i, j, k
'simple sprite
For i=0 To 63: For j=0 To 63:PSet (i,j), (i\4) Xor (j\4):Next j,i
ip=ImageCreate(64,64)
Get (0,0)-(63,63),ip
Cls
'viewport
Line (215,135)-(425,345),1,bf
View (220,140)-(420,340)
k=0
'move sprite
Do
i=100*Sin(k*.02)+50: j=100* Sin(k*.027)+50
ScreenSync
ScreenLock
Cls 1: Put (i,j),ip ,PSet
ScreenUnlock
k=k+1
Loop Until Len(Inkey)
ImageDestroy(ip)
Differences from QB
- QBASIC preserves the WINDOW coordinate mapping after subsequent calls to VIEW.
- FreeBASIC's current behavior is to preserve the WINDOW coordinates after calls to VIEW, or when working on images, meaning that the coordinate mapping may undergo scaling/translations if the viewport changes. (If a WINDOW hasn't been set, there is no coordinate mapping, and so it doesn't change after calls to VIEW.) The behavior may change in future, but consistent behavior can be assured over inconstent viewport coordinates by re-calling WINDOW whenever you change the VIEW.
See also