1画素をプロットします。
構文:
PSet [target ,] [STEP] (x, y) [,color]
パラメタ:
target (目標)
描画するためのバッファを指定します。
STEP (ステップ)
開始座標が、相対的であることを示します。
(x, y)
画素の座標。
color (色)
カラー属性。
解説:
target (目標) は、描画するためのバッファを指定します。
target (目標) は、
ImageCreate や
Get (描画) で作られた画像でもかまいません。
省略すると、現在の画面の、作業中のページが、デフォルト選択されます。
(x, y) は画素の座標です。
STEP を付けると、
(x, y) 座標は、グラフィックス・カーソル位置からの相対位置になります。
STEP を省略すると、
(x, y)は、
target(目標)の左上の角からの相対位置になります。
x、y 座標は、
View (描画) と
WINDOW 命令文 の最後の呼び出しに、影響されます。
そして、
View (描画)命令文によって設定される、現在の切り取り領域に、従います。
color (色)は、カラー属性を指定します。
8bpp 索引モードでは、8ビットのパレット索引が使われます。16bppモードでは 24ビットの RGB 値が使われます(整数の8ビットより上位は使われず、R、G、B の精度は限定されます)。そして、32bppモードでは 32ビットの RGB か RGBA 値が使われます(8ビットより上位は未使用か、アルファーを保持します)。
16ビットの値(5ビットR + 6ビットG + 5ビットB)を受け入れないことに、注意してください。
省略すると、
color(色)は、現在の前景色が使われます。
Color(色)を参考してください。
color(色) は、グラフィックスモード特有です。詳細は、
Color と
Screen (描画) を参考下さい。
速度について:
PSet は有効な結果を提供しますが、追加計算やチェックのオーバーヘッドのために、繰り返し呼び出すのはかなり遅いです。
Imageinfo と
Screeninfo/
ScreenPtr から得られた結果を使っ、ダイレクト・メモリ・アクセスを使うと、はるかに優れたパフォーマンスを達成できます。
例:
注:FreeBASIC 1.08〜 で、SetEnviron を追加しなくても、日本語環境で描画画面が表示されるように改善されました。
' Sets the graphics method GDI
' 描画方法を GDI に設定
SetEnviron("fbgfx=GDI")
'適切な Screen mode を設定します。- 320 x 240 x 8bpp 索引カラー
ScreenRes 320,
240,
8
'座標100、100、白色(Color 15)で、画素をプロットします。
PSet (100,
100),
15
'操作を確認してください。
Locate 1:
Print "Pixel plotted at 100, 100"
'キー入力を待ちます。
Sleep
'座標150、150、赤色(Color4)で別の画素をプロットします。
PSet (150,
150),
4
'操作を確認してください。
Locate 1:
Print "Pixel plotted at 150, 150"
'キー入力を待ちます。
Sleep
'2 番目の点を基準にして、3 番目の画素を、白色(Color15)でプロットします。
'この画素は、座標60、60が、あたえられています。
'それは前の座標(150、150)に、60、60 を加えた位置、つまり、210、210にプロットされます。
PSet Step (60,
60),
15
'操作を確認してください。
Locate 1:
Print "Pixel plotted at 150 + 60, 150 + 60"
'キー入力を待ちます。
Sleep
'プログラムを終了します。
End
渡辺注:プロットする点が小さいので、表示をよく見てくださいね。
Screen mode の設定は、下記でもOKです。
Screen 14
下は、「Tiny Basic による Basic 入門」
http://www2.cc.niigata-u.ac.jp/~takeuchi/tbasic/TBIntro/tbasic.html
で紹介されている、フラクタルを描くプログラムの例です。
小変更で、FBで動きました。ご参考まで。
FractalTB2FB.bas
下は、
ab.com の、コミュニティ フォーラム の、「プログラミング質問板」に掲載されていた、N88BASICのプログラムの例です。
http://www.activebasic.com/forum/viewtopic.php?t=2399

下は、モンテカルロ法による、円周率の推定です。
わずか一秒で、百万個の点をプロットできるのは、コンパイラーの威力ですね。
P102_fFB2.bas

「三平武男の頁」で紹介されている「数式絵」です。
http://homepage3.nifty.com/4amigos/gallerym/
F-BASIC のコードを微修正しただけで、使えました。
Firebird.bas

以下は、
QB64 http://www.qb64.net/ の
サンプル・フォルダにあるプログラムを、FreeBASIC 用に微修正したものです。
QB64\programs\samples\misc\frac3.bas

以下は、
QB64 http://www.qb64.net/ の
サンプル・フォルダにあるプログラムを、FreeBASIC 用に微修正したものです。
QB64\programs\samples\misc\sinecube.bas
QBとの違い:
- target (目標) は、 FreeBASIC で追加されました。
- 16bpp と 32bppモードでは、32ビットの値が、8ビットのパレット索引の代わりに、必要になります。
参照: