Window
 
设置当前视口的新视图坐标映射

语法

Window [ [Screen] ( x1 , y1 )-( x2 , y2 ) ]

参数

Screen
指定y坐标的可选参数从上到下增加。
( x1 , y1 )-( x2 , y2 )
与当前视口的相对角对应的新浮点值。如果省略,Window坐标映射将被删除。

说明

Window用于定义新的坐标系。(x1 , y1 )(x2 , y2 )是要映射到当前视口的相对角的新坐标;传递给图形原语的所有将来的坐标都将受到这种新映射的影响。如果省略Screen,则新坐标系将为笛卡尔坐标,即y坐标从底部到顶部增加。调用不带参数的Window禁用坐标变换。

FreeBASIC的当前行为是跟踪Window的角落,而不是特定的坐标映射。这意味着在调用View之后坐标映射可以改变。
当处理图像缓冲区时,Window角也被考虑,因此当Window有效时,坐标映射将不同于图像。

当没有Window有效时,没有效果的坐标映射,所以有效坐标系是常数,与图像缓冲区大小无关,或View坐标(如果有的话)。

例子

Screen 13

''定义剪辑区域
View ( 10, 10 ) - ( 310, 150 ), 1, 15    

''设置视图坐标
Window ( -1, -1 ) - ( 1, 1 )             

''绘制X轴
Line (-1,0)-(1,0),7
Draw String ( 0.8, -0.1 ), "X"

''绘制Y轴
Line (0,-1)-(0,1),7
Draw String ( 0.1, 0.8 ), "Y"

Dim As Single x, y, s

''计算步长
s = 2 / PMap( 1, 0 )

''绘制功能
For x = -1 To 1 Step s
  y = x ^ 3
  PSet( x, y ), 14
Next x

''恢复到屏幕坐标
Window       

''删除裁剪区域
View Screen  

''画标题
Draw String ( 120, 160 ), "Y = X ^ 3"

Sleep




与QB差别

  • QBASIC保留随后调用VIEW的坐标映射。
  • FreeBASIC的当前行为是在调用VIEW之后保存WINDOW坐标,或者在图像处理时,这意味着坐标映射可能会进行缩放/翻译。(如果没有设置WINDOW,则没有坐标映射,因此在调用VIEW后不会更改)。行为可能会在将来发生更改,但可以通过重新定义视口坐标来确保一致的行为,当您更改VIEW时调用WINDOW。

参考