View (Graphics)
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

- `View Print`
- `Screen (Graphics)`
- `Window`
- `PMap`