描画予約語のために、新しい物理座標の、マッピング設定と、切り取り領域を、設定します。
構文:
View
View ( x1, y1 )-( x2, y2 ) [ [, fill_color ] [, border_color ] ]
View Screen ( x1, y1 )-( x2, y2 ) [ [, fill_color ] [, border_color ] ]
パラメタ:
説明:
viewport または切り取り領域は、描画画面の矩形の領域で、その外には描画は実行されません。
つまり、画像の描画は、この領域内でのみ表示されます。
View または
View Screen を呼ぶ前に、
Screen (Graphics) または
ScreenRes を使って、描画画面を作成する必要があります。
最初の構文 (
View) は、画面全体を包含するように、ビューポートを設定します。これは、新しい描画画面のデフォルト・ビューポートです。
2番目と3番目の構文 (
View parameters と
View Screen parameters) は、ともに、新しいビューポートを定義できるようにします。
各パラメーターが指定する効果は、そのパラメーターが指定されている場合にのみ、発生します:
- ビューポートの隅は、 x1, y1, x2, y2 パラメーターで指定します。
- fill_color と border_color は、どちらも Color で受け入れられる形式です。
- 2番目の構文 (View parameters) は、画像描画命令文と手続きに指定される座標などの、描画画面の座標マッピングを、ビューポートの左上隅からの相対的な位置になるように、変更します。
- 3番目の構文 (View Screen parameters) は、画像描画命令文および手続きに指定された座標などの、描画画面の座標マッピングを、画面の左上隅からの相対座標になるように、変更します。
- どちらの場合も、新しいスケール倍率は適用されません(これについては、 Window を参照ください)。
例:
注:FreeBASIC 1.08〜 で、SetEnviron を追加しなくても、日本語環境で描画画面が表示されるように改善されました。
' Sets the graphics method GDI
' 描画方法を GDI に設定
SetEnviron("fbgfx=GDI")
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からの違い:
- QBASIC は、後続の VIEW の呼び出しの後、WINDOW 座標マッピングを保存します。
-
FreeBASIC の現在の振る舞いは、VIEW への呼び出した後に WINDOW 座標を保存します。あるいは、画像に作用するとき、ビューポートが変わる場合、座標マッピングが、大きさ変更/移動の影響を受けることを意味します。
( WINDOW が設定されていない場合、座標マッピングはありません。したがって、それは VIEW に呼び出した後、変わりません。)
この振る舞いは、今後変わるかもしれません。しかし、一貫した振る舞いは、 VIEW を変更する場合は常に、WINDOW を再度呼び出すことによって、不定のビューポート座標上に保証することができます。
参考: