VIEW (GRAPHICS)
- Source: https://www.freebasic.net/wiki/wikka.php?wakka=KeyPgViewgraphics
- Last revised: 2023-07-09
Sets new physical coordinate mapping and clipping region for graphics keywords
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 ULong
The color to fill the new viewport.
border_color as ULong
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 graphics drawing will be done. That is, only graphics drawing done within this area will be shown. A graphics screen must be created with Screen (Graphics) or ScreenRes before calling View or View Screen.
The first statement (View) sets the viewport to encompass the entire screen, which is the default viewport for a new graphics screen.
The second and third statements (View parameters and View Screen parameters) both allow a new viewport to be defined. The indicated effects for each parameter only occur if that parameter is specified:
- The corners of the viewport are specified by the
x1,y1,x2andy2parameters. fill_colorandborder_colorare both in the format accepted byColor.- The second statement (
Viewparameters) modifies the coordinate mapping of the graphics screen such that coordinates specified for graphics drawing statements and procedures are relative to the top-left corner of the viewport. - The third statement (
View Screenparameters) modifies the coordinate mapping of the graphics screen such that coordinates specified for graphics drawing statements and procedures are relative to the top-left corner of the screen. - In both cases no new scale factor is applied (see
Windowfor that).
Examples
start GeSHi
Screen 12
Dim ip As Any Ptr
Dim As Integer x, y
'simple sprite
ip = ImageCreate(64,64)
For y = 0 To 63
For x = 0 To 63
PSet ip, (x, y), (x\4) Xor (y\4)
Next x
Next y
'viewport with blue border
Line (215,135)-(425,345), 1, bf
View (220,140)-(420,340)
'move sprite around the viewport
Do
x = 100*Sin(Timer*2.0)+50
y = 100*Sin(Timer*2.7)+50
ScreenSync
ScreenLock
'clear viewport and put image
Cls 1
Put (x, y), ip, PSet
ScreenUnlock
Loop While Inkey = ""
ImageDestroy(ip)end GeSHi
Differences from QB
- QBASIC preserves the
WINDOWcoordinate mapping after subsequent calls toVIEW. - FreeBASIC's current behavior is to preserve the
WINDOWcoordinates after calls toVIEW, or when working on images, meaning that the coordinate mapping may undergo scaling/translations if the viewport changes. (If aWINDOWhasn't been set, there is no coordinate mapping, and so it doesn't change after calls toVIEW.) The behavior may change in future, but consistent behavior can be assured over inconstent viewport coordinates by re-callingWINDOWwhenever you change theVIEW.
See also
View PrintScreen (Graphics)WindowPmap
Back to DocToc