FreeBASIC マニュアルのトップに戻る

FreeBASIC Screengraphics

目次→描画ライブラリー参考→描画画面関連SCREEN (GRAPHICS)←オリジナル・サイト

Screen (描画)  左にメニュー・フレームが表示されていない場合は、ここをクリックして下さい

←リンク元に戻る プログラム開発関連に戻る

QB 風の、モード番号を使って、描画モードを、初期化します。

構文:

-lang fb|fblite 方言:
Screen mode [, [ depth ] [, [ num_pages ] [, [ flags ] [, [ refresh_rate ]]]]]
Screen , [ active_page ] [, [ visible_page ]]

-lang qb 方言:
Screen [ mode ] [, [ colormode ] [, [ active_page ] [, [ visible_page ]]]]

パラメータ:
mode
 mode(モード)は、QB スタイルの、描画画面モード番号(下を参考)です。
 mode0 とすると、現在設定された全ての描画モードを閉じます。そして、すべての関数が、その既定の実行画面モードの関数に戻されます。
 利用可能なモードは、以下を参考してください。

depth(濃淡)
 depth(濃淡)は、1画素の色の濃淡を、ビットで表現します。
 これは、モード14 以上の場合に、有効です。
 depth(濃淡)の値として、816、および 32 が許可されています。
 また、1524は、それぞれ、1632の別名として、許可されています。
 省略時は、規定値の8になります。

num_pages
 num_pages は、必要とする、ビデオページ数です。
 省略されるなら、既定値は、1とします。

flags
 flags(旗(フラグ))は、描画ドライバの優先度、全画面モードとして、いくつかのものを選択するために使います。
 fbgfx.bi ファイルに、あらかじめ定義された定数が用意されています。
 利用可能な旗(フラグ)については Screenres ページを参照してください。

refresh_rate
 リフレッシュレートを要求します。
 指定したレートが、現在のカードで利用可能でないか、または、このパラメタを省略すると、FreeBASIC は、自動的にレートを選びます。

active_page
印刷/描画コマンドが有効になる、アクティブ・ページをセットするために使います。

visible_page
可視ページをセットするために使います。可視ページはユーザに見えます。

colormode
未使用 - QB 構文との互換性のために許可された。

説明:
 Screen は、GfxLib にリンクするようにコンパイラに伝えます。
そして、旗(flags) の設定に従って、QB だけ、あるいは、GUI 上の QB、または OpenGL 描画モードを初期化します。

 「QBだけ」モードで、ただの窓画面か、全画面解像度が設定されます。
そして、標準メモリの1つか複数のバッファが作成されます。
そして、実行画面コマンドは、その描画バージョンに書き直されます。
そして、デフォルト・パレット(default palette) が設定されます。
そして、自動スクリーン・リフレッシュ処理が始動されます。
 QB 風の、描画と実行画面命令文を使うことができます。

 GUI 上の QB モードでは、標準メモリに1つか複数のバッファが作成されます。
そして、実行画面コマンドは、その描画バージョンに書き直されます。
そして、デフォルト・パレット(default palette) が、設定されます。
 QB 風の、描画と実行画面命令文を使うことができます。
 画面を作成して、描画バッファの内容で、それをリフレッシュするのは、ユーザ次第です。

 OpenGL モードでは、ただの窓画面か、全画面解像度が設定されます。
そして、標準メモリの1つか複数のバッファが作成されます。
そして、OSの OpenGL ライブラリが、初期化されます。
 ここから、OpenGL コマンドだけが使えます。
 QB 風の、実行画面コマンドは、禁じられます。
 これで、移行可能な方法で OpenGL を初期化します。
そして、GL ピクセル形式を適切にカスタマイズするために、ScreenControl を使うことができます。GL ピクセル形式は、Screen が呼ばれる前に使われます。あるいは、モードが設定された後、サポートされたオープンGL拡張のリストを検索するために、使われます。
そして、拡張関数ポインターを得るために ScreenGLProc を使うことができます。

 サポートされる 3つの内部のピクセル形式の一つで使われる、標準メモリに作成されるどんなバッファも、必要な色の濃さに依存します。
 詳細は、内部の描画形式 を参照ください。

 Screen が、指定されたモードを設定できないなら、「Illegal function call(不法なファンクションコール)」のエラーが表示されます。そして、画面ポインタは 0 に設定されます。
 したがって、Screen の失敗は、標準の On Error 処理を使うか、または Screenptr で、画面ポインタを検索することで、検出できます。

 全画面モードを設定する前に、プログラムは、描画カードでそのモードが利用可能かどうかを、Screenlistを使ってチェックします。

mode(モード)の詳細

利用可能な mode(モード)のリスト:
 QB互換性モード:
モード 解像度 エミュレーション テキスト 文字サイズ 画面上の色
1 320x200 CGA 40X25 8x8 16 背景色、前景色は、4つの組合せの1つ
2 640x200 CGA 80x25 8x8 2つの属性に対して、16色
7 320x200 EGA 40x25 8x8 16の属性に対して、16色
8 640x200 EGA 80x25 8x8 16の属性に対して、16色
9 640x350 EGA 80x25 0r 80x43 8x14 or 8x8 16の属性に対して、16色
11 640x480 VGA 80x30 or 80x60 8x16 or 8x8 2つの属性に、256 K色
12 640x480 VGA 80x30 or 80x60 8x16 or 8x8 16の属性に、256 K色
13 320x200 MCGA 40X25 8X8 256 の属性に、256 K色
(モード番号「0」はテキストモード専用です)

 新しい FreeBASIC モード:
モード 解像度 エミュレーション テキスト 文字サイズ 画面上の色
14 320x240
40x30 8x8 256の属性に256 K色または、直接色
15 400x300
50x37 8x8 256の属性に256 K色または、直接色
16 512x384
64x24 or 64x48 8x16 or 8x8 256の属性に256 K色または、直接色
17 640x400
80x25 or 80x50 8x16 or 8x8 256の属性に256 K色または、直接色
18 640x480
80x30 or 80x60 8x16 or 8x8 256の属性に256 K色または、直接色
19 800x600
100x37 or 100x75 8x16 or 8x8 256の属性に256 K色または、直接色
20 1024x768
128x48 or 128x96 8x16 or 8x8 256の属性に256 K色または、直接色
21 1280x1024
160x64 or 160x128 8x16 or 8x8 256の属性に256 K色または、直接色


depth(濃淡)の詳細
 モード 14 以上で、濃淡パラメタは、色の濃さを、指定された新しい方に変えます。
 濃淡を指定しないと、モードは、8bpp で実行します。
 モード 13 以下では、depth(濃淡)を指定しても無視されます。

num_pages の詳細:
 どのビデオモードでも、いくつでもページ数を設定できます。
 このパラメタを省略すると、目に見えるページ(No. 0)だけが、利用可能になります。
 ページは、目に見える画面か、画面外のバッファのどちらかです。1つの画面が作業中のとき、別のページ表示させることができます。
 詳細は、Screenset命令文を見てください。
 すべてのページは、標準のメモリで作成されます。ビデオカード・メモリは、ビデオ・バッファリングに使われることはありません。

flags の詳細:
(Screenres を参照下さい。)

その他の詳細
ウィンドウ・モードでは、 ウィンドウを閉じるボタンをクリックすると、(Chr(255) & "k") が、Inkey バッファに、追加されます。
画面を最大化するボタンをクリックすると、可能な場合は、全画面モードに切り替わります。
Screen 呼び出しが成功すると、現在表示されているページと、作業中のページが、ともにページ番号 0 に設定され、
パレットが、指定されたモードにリセットされ(既定パレット を参照)、
切り取り領域が、画面のサイズにリセットされ、
カスタム座標マッピングが無効になり、
テキスト・カーソルを画面の左上隅に移動します(描画画面では表示されません)。
前景色と背景色を、それぞれ明るい白と黒に設定します。

Screen 0 使用上の注意(テキストモードのみ)
デフォルトの BASIC 画面モード (Screen 0) はテキストベースです。
Screen 0 は描画画面を閉じますが、実行画面があればそれも消去します。
Screen 0, , , GFX_SCREEN_EXIT (with GFX_SCREEN_EXIT=&h80000000) も、任意の描画画面を閉じますが、実行画面が存在する場合はクリアしません(それまでのテキストは保存されます)。

例:
注:FreeBASIC 1.08〜 で、SetEnviron を追加しなくても、日本語環境で描画画面が表示されるように改善されました。
' Sets the graphics method GDI
' 描画方法を GDI に設定
SetEnviron("fbgfx=GDI")

' screen mode 13 (320*200, 8bpp) を設定します
Screen 13
Print "Screen mode 13 set"

Sleep


' Sets the graphics method GDI
' 描画方法を GDI に設定
SetEnviron("fbgfx=GDI")

#include "fbgfx.bi"
#if __FB_LANG__ = "fb"
Using FB '' Screen mode flag は、lang FB の FB 名前空間にあります
#endif

' 窓モードで、画面モード 18 (640*480) 、色深度 32bpp で 4 ページを設定します。スイッチングは使用不可です。
Screen 18, 32, 4, (GFX_WINDOWED Or GFX_NO_SWITCH)

' 画面がうまく開けたか、チェックします
If ScreenPtr = 0 Then
    Print "Error setting video mode!"
    End
End If

Print "Successfully set video mode"
Sleep



プラットホーム間の差:

方言の差異:

QBからの違い:

参照:
描画画面関連に戻る
←リンク元に戻る プログラム開発関連に戻る

ページ歴史:2023-07-12 03:10:12
日本語翻訳:WATANABE Makoto、原文著作者:SysOp


ホームページのトップに戻る

表示-非営利-継承