View (图形)
 
设置新的物理坐标映射和剪切区域

语法

View
View ( x1 , y1 )-( x2 , y2 ) [ [, fill_color ] [, border_color ] ]
View Screen ( x1 , y1 )-( x2 , y2 ) [ [, fill_color ] [, border_color ] ]

参数

x1 As Integer, y1 As Integer
视口的一个角相对于屏幕左上角的水平和垂直偏移(以像素为单位)。
x2 As Integer, y2 As Integer
视口相对于屏幕左上角的相对角的水平和垂直偏移(以像素为单位)。
fill_color As UInteger
填充新视口的颜色。
border_color As UInteger
绘制新视口的边框颜色。

说明

viewport 或剪辑区域是图形屏幕的矩形区域,其外不会进行绘图。也就是说,只有在这个区域内完成绘图才会显示出来。在ViewView Screen之前,必须使用ScreenScreenRes创建图形屏幕。

第一个语句将视口设置为包含整个屏幕,这是新图形屏幕的默认视口。

第二和第三个语句允许定义新的视口。视口的角由x1 y1 x2 y2 参数指定。fill_color border_color 均采用Color接受的格式。每个参数的指示效果仅在指定该参数时发生。

第二个语句修改图形屏幕的坐标映射,使得为绘图语句和过程指定的坐标相对于视口的左上角。

第三个语句修改图形屏幕的坐标映射,使得为绘图语句和过程指定的坐标相对于屏幕的左上角。

例子

Screen 12
Dim ip As Any Ptr
Dim As Integer x, y

'简单的精灵
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

'具有蓝色边框的视口
Line (215,135)-(425,345), 1, bf
View (220,140)-(420,340)

'在视口周围移动精灵
Do

  x = 100*Sin(Timer*2.0)+50
  y = 100*Sin(Timer*2.7)+50
  
  ScreenSync
  ScreenLock
  
  '清晰的视口和图像
  Cls 1
  Put (x, y), ip, PSet
    
  ScreenUnlock

Loop While Inkey = ""

ImageDestroy(ip)


与QB差别

  • 后续拨打VIEW 后,QBASIC将保留WINDOW 坐标映射。
  • FreeBASIC目前的行为是调用VIEW 之后或在图像处理时保留WINDOW 坐标,这意味着如果视口更改,坐标映射可能会进行缩放/翻译。(如果尚未设置WINDOW ,则不存在坐标映射,因此在调用VIEW 后不会更改。)行为可能会在将来更改,但一致只要更改VIEW ,可以通过重新调用WINDOW 来确保不合乎视口坐标的行为。

参考