FreeBASIC Screenres
説明:
Screenres は、
flags 設定に従って、コンパイラに、
GfxLib にリンクして、QB-only, QB-on-GUI あるいは
OpenGL グラフィック・モードを初期化するように、指示します。
Screenres は、作成されたウインドウまたは全画面を、消去します。
全画面モード以外では、解像度は、描画カードの、どの解像度とも、合致する必要はありません。
555x111 のような解像度が利用できます。
GfxLib は、そのようなサイズの窓を作成します。
DOSについては、
GfxLib 概要 を参照下さい。
Screenres モードの字体サイズは、既定で 8×8 になります。
これは、
Width 関数を使って、テキスト行/列の数を設定することで、変更できます。
QB-only モードでは、dumb 画面か、全画面が、設定されます。そして、標準メモリに、1つか複数のバッファが作成されます。実行画面コマンドは、そのグラフィック・バージョンに、出力先変更されます。
デフォルトパレットが設定されます。そして、自動画面初期化処理が、始まります。
QB 風の、描画と実行画面の命令文を、使うことができます。
QB-on-GUI モードでは、標準メモリに、1つか複数のバッファが作成されます。そして、実行画面コマンドは、そのグラフィック・バージョンに、出力先変更されます。そして、
デフォルトパレットが、設定されます。
QB 風の、描画と実行画面の命令文を、使うことができます。
画面を作成して、描画バッファの内容でそれを初期化するのは、ユーザの仕事になります。
OpenGL モードでは、dumb 画面か、全画面が、設定されます。そして、標準メモリに、1つか複数のバッファが作成されます。そして、システムの
OpenGL ライブラリは、初期化されます。
ここから、
OpenGL コマンドだけしか、描画バッファに書くために使えません。
QB の形式や、実行画面コマンドは、禁じられます。
このモードは、移行可能な方法で
OpenGL を初期化します。
Screenres が返すエラーコードは、次の行で
Err を使って確認できます。
Screenres の関数バージョンは、エラーコードを32ビット
Long で、直接返します。
flags 詳細:
旗を省略すると、FreeBASIC は、ウインドウ・モードで、QB 互換のグラフィックスを使います(DOSを除いて)。
これらの定数は、
fbgfx.bi で定められます。
-lang fb 方言では、これらの定数は、
FB 名前空間 の一部です。
これらの値は、マスクを形成するために、
Operator Or を使って組み合わせることができます。
大部分のフラグは、DOS でサポートされないことに注意して下さい。
使える flags:
graphic mode flags
- GFX_NULL:
QB-on-GUI 描画モードを始めます。これは、ウインドウでなく描画バッファをつくります。
ユーザーは、ウインドウ(イベント・マネージャ)を実装して、必要に応じて画面を再読込みしなければなりません。
このモードは、FreeBASIC 描画関数と、API によるウインドウを混合できます。
あるいは、画面で見えるようにすることなく描画(たとえばファイル)を処理することを許します。たとえ、純粋なコンソールアプリケーションでさえも。
この旗は、全ての他のモード旗に優先します。
Windows では、GFX_NULL の例 を参照ください。
- GFX_OPENGL:
dumb window で描くために、OpenGL を初期化します。
FreeBASIC 描画関数は、使えません。
画面は自動的に更新されません、Flip を使う必要があります。
このオプションは、OpenGL ライブラリーを初期化する、移植可能な方法を提供します。
-
上記の、どのオプションも指定しないと、FreeBASIC は、QB-only 描画モードに入ります:
これは、バッファと dumb window を作成します。そして、画面を自動的に更新するスレッドをセットして、キーボードとマウスを管理します。
FreeBASIC 描画関数を、使えます。
window mode flags
GFX_NULL モードが使われる場合、ウィンドウ・モード・フラグは無意味です。
- GFX_WINDOWED:
ウインドウ・モードが使えるならば、FreeBASIC は、現在のデスクトップに、要求されたサイズのウインドウを開きます
- GFX_FULLSCREEN:
描画カード・スイッチ・モードは、要求されたモードと色深度に切り替えられます。そして、OS 全画面モードが使われます。
モードが、現在のカードで利用できないなら、FreeBASIC は、ウインドウ・モードに切り替わります。
- If GFX_FULLSCREEN が指定されない場合、GFX_WINDOWED のための振る舞いが、仮定されます。
- GFX_NO_SWITCH:
全画面に変わる、または、Alt-Enter を押してウインドウ・モードに変わるのを、防ぎます。
- GFX_NO_FRAME: 境界のないウィンドウを作成します。
- GFX_SHAPED_WINDOW:
RGBA(255、0、255、0)が画面上で描かれるところならどこでも、透明な範囲を作ります。
- GFX_ALWAYS_ON_TOP:
常に上でとどまるウインドウを作成します。
option flags
どのモードでも、この旗は、特別な振舞いを起動させます
- GFX_ALPHA_PRIMITIVES:
は、描画ライブラリに、すべての描画の原形に、アルファ・チャンネルをサポートするように伝えます。
これは、明度(RGBA マクロか、形式 &hAARRGGBB の直接色のいずれかによる) で指定されたアルファが、常にすべての原形によって使われる、ということを意味します。
- GFX_HIGH_PRIORITY: 描画ライブラリに、描画処理の優先度を高くするよう指示します。
Win32 プラットフォームの gdi と DirectX ドライバーと、新しいプラットフォームに追加された Direct2D のみに影響します。
OpenGL Buffer flags
このフラグは OpenGL 描画モードでのみ働きます。GFX_OPENGL と結合します。
- GFX_STENCIL_BUFFER: ステンシル・バッファを使う強制 OpenGL
- GFX_ACCUMULATION_BUFFER: アキュミュレーション・バッファーを使う強制 OpenGL
- GFX_MULTISAMPLE: ARB_multisample 拡張によるリクエスト全画面アンチエイリアシング
GFX_FULLSCREEN パラメータが存在するかどうかによって、
Screen は、指定されたビデオ・モードを、それぞれ、全画面かウインドウ・モードに設定しようとします。
全画面モードが設定され、システムが指定されたモードで全画面に設定できないなら、ウインドウ・モードでためします。
ウインドウ・モードが設定され、システムが指定されたモードでウインドウを開けることができないなら、全画面をためします。
すべて失敗するなら、
Screen は影響を持ちません。そして、実行は
Screen 呼び出しに続く命令文から再開します。
あなたは、描画モードがセットされたかどうかについて調べるように気をつけなければなりません。そして、それに応じてふるまわなければなりません;
Screen が成功しているかどうか調べる方法が、
Screenptr 関数の戻り値をテストすることです;
詳細はそのページを参照してください。
注意:
Screen 0 は描画画面を閉じますが、実行画面が存在する場合はそれもクリアします。
Screen 0, , , GFX_SCREEN_EXIT (with GFX_SCREEN_EXIT=&h80000000) も描画画面を閉じますが、実行画面が存在する場合はクリアしません (前のテキストは保持されます)。
Graphics mode console
コンソール・コマンド(
Locate,
Print)、入力は、標準 QB
Screen モードと、拡張ものを合わせて使うことができます。提供された標準色深度は、
Screen の第2引数を使って変更できません。
表に、複数のテキスト解決がテキスト・モードで利用できる、とある所で、必要なテキスト解決は、
Width を使って要求することができます。
Print されたどんな文字も、その文字のまわりの背景を消します;
文字は、透明な背景を使いません。
例:
注意:FreeBASIC 1.08〜 で日本語環境でも描画画面が表示されるように改善されました。
〜Windows8.1 日本語と、Windows10 英語では表示されますが、Windows10 日本語では表示されません。
Windows10 日本語では、下のように Screencontrol を追加すると、表示されました。
' 画面モードを 320*200, 8 bits per pixel に設定します
ScreenRes 320, 200, 8
' 色の帯を斜めのパターンで画面全体に描きます
For y As Long = 0 To 200-1
For x As Long = 0 To 320-1
PSet (x,y),(x + y) And 255
Next x
Next y
' テキスト "Hello World!!" を、描いた線の上に表示します。位置は、左上の角です
Print "Hello world!!"
' ユーザがキーを押すまで、ウィンドウを開けておきます
Sleep
Windows10 日本語で描画画面が表示されるように、SetEnviron を追加したバージョン。
プラットホーム差:
-
DOS では、Windowing と OpenGL関連のスイッチは、利用できません。その他、GfxLib概要を参照下さい。
方言差:
-
-lang qb 方言では、エイリアス(別名 alias) __Screenres で参照しないかぎり、使えません。
QBとの違い:
参照:
ページ歴史:2023-07-08 23:54:45
日本語翻訳:WATANABE Makoto、原文著作者:NickWhiu