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

FreeBASIC Screenres

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

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

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

 水平と垂直の画素数値を指定して、描画モードを初期化します。

構文:
declare function Screenres ( byval width as long, byval height as long, byval depth as long = 8, byval num_pages as long = 1, byval flags as long = 0, byval refresh_rate as long = 0 ) as long


用法:
Screenres width, height [, [depth] [, [num_pages] [, [flags] [, refresh_rate ]]]]
result = Screenres( width, height [, [depth] [, [num_pages] [, [flags] [, refresh_rate ]]]] )


パラメタ:
width, height
 それぞれ、画面の幅と高さを示します。
 全画面モードに対しては、ユーザは、Screenlist を使って、使える値をチェックして下さい。

depth
 色の濃淡深度で、1画素のビットで表現します。
 使える色の濃淡深度は、1、2、4、8、16、および32です。
 1524 は別名として認められていて、それぞれ、1632 と同じ結果になります。
 省略時の既定値は、1画素あたり8ビットです。
 8ビット以下は、パレット・イメージになります。
 デフォルト・パレットは、Screen (描画) 13で使われる256色パレットの、最初の 2 ^ depth の色になります。

num_pages
作成する描画ページの数。既定値は 1 です(Screen (描画) を参照)。

flags
 全画面モードや、描画ドライバーの優先度など、画面のさまざまなプロパティを設定するために使います。
(利用可能な flags については、標準ヘッダー "fbgfx.bi" を参照してください)

refresh_rate
画面の望ましいリフレッシュ・レートです。全画面モードと若干のシステムとドライバーに影響するだけです。
デフォルトで、適切な値が設定されます。無効なリフレッシュ・レートは無視されます。

戻り値:
成功する場合、戻り値 ゼロ (0) 。失敗の場合は、ゼロでないエラーコード。(エラー処理)

説明:
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

window mode flags
GFX_NULL モードが使われる場合、ウィンドウ・モード・フラグは無意味です。

option flags
どのモードでも、この旗は、特別な振舞いを起動させます

OpenGL Buffer flags
このフラグは OpenGL 描画モードでのみ働きます。GFX_OPENGL と結合します。

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 を追加したバージョン。
' Sets the graphics method GDI
' 描画方法を GDI に設定
SetEnviron("fbgfx=GDI")

Dim x As Integer, y As Integer

ScreenRes 640, 480, 8       'この行は、画面モードを、640x480x8に設定します。

'以下のコード・ブロックは、画面全体に、対角線を引ます。
For x = 0 To 640 - 1
   For y = 0 To 480 - 1
      PSet (x,y),(x + y) And 255
   Next y
Next x

'描いた、線の上に、 "Hello World!" を、描画します。
Print "Hello world!!"

Sleep

ScreenRes
プラットホーム差:

方言差:

QBとの違い:

参照:
描画画面関連 に戻る
←リンク元に戻る プログラム開発関連に戻る
ページ歴史:2023-07-08 23:54:45
日本語翻訳:WATANABE Makoto、原文著作者:NickWhiu

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

表示-非営利-継承