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

FreeBASIC Circle

目次→描画ライブラリ参考→2次元 描画関数CIRCLE←オリジナル・サイト

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

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

楕円または円を描くための、描画命令文

構文:
Circle [target,] [STEP] (x,y), radius[, [color][, [start][, [end][, [aspect][, F]]]]]


参考:N88 Basic の構文
  Circle       (x,y), radius [, color] [, start] [, end] [, aspect] [, f] [, color2]
 color2:fを指定した場合、塗りつぶすためのブラシのカラーコードを指定できます。

 N88 Basic からの移植例
ActiveBasicV4 でコンパイルした、実行ファイルと、処理速度を比較してみましょう。
注:FreeBASIC 1.08〜 で、SetEnviron を追加しなくても、日本語環境で描画画面が表示されるように改善されました。
'$lang: "qb"
' '$lang: "qb"'$lang: "fblite" のいずれかを使います。

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

1000 'CLS 3
1002 Screen 12
1005 LINE (0,0)-(639,399),15,BF:LINE (0,280)-(639,399),1,BF
1010 FOR UX=1 TO 500
1020   X=INT(RND*600)+20
1030   Y=INT(RND*220)+40
1040   R=INT(RND*30)+20
1050   CIRCLE (X-2,300+(Y/5)),R,0,,,.2,F',0 黒
1060   CIRCLE (X-2,Y-8),R,0,,,,F',0 黒
1070   CIRCLE (X-5,Y-10),R-3,1,,,,F',1 青
1080   CIRCLE (X-10,Y-12),R-7,11,,,,F',5 水色 11 明るいシアン
1090   CIRCLE (X-15,Y-16),R-19,15,,,,F',7 灰色 15白
1100 NEXT UX
1150 sleep
N88 Basic からの移植例
パラメタ:
target (目標)
任意; 描画をするための、バッファを指定します。
STEP
座標を、相対座標で移動させるときに、使います。
(x, y)
楕円の中心の座標。
radius (半径)
円の半径 - 楕円に対しては、半長軸(つまり最長の半径)
color (色)
start (始点)
円を描画開始する角度
end (終点)
終点の角度
aspect (横縦比)
楕円の縦横比(高さと幅の比率)
F
塗りつぶし指定。

説明:
Circle は、与えたパラメタにしたがって、円、楕円、または弧(アーク)を、描画します。

target は、描画するためのバッファを指定します。
target は、ImagecreateGet (Graphics) で作成された画像の場合もあります。
省略すると、target のデフォルトは、画面の現在の作業ページになります。
(Screenset を参照下さい。)

図形の中心は、目標画面の(x, y)で指定した場所になります。

Radius は、図形の半径を指示します。
aspect レシオが 1.0 でない場合は、最も大きい半径を、ここで与えなければなりません。

Color は、色属性を指示します。これは、画面の表示色モードによって制限されます。(詳細は、ColorScreen(グラフィックス) を参照ください)。
省略すると、 Color 命令文で設定される、現在の前景色が、使われます。

STEP オプションは、xy の位置を、現在の描画座標に対して、ずらす値を指定します。

startend は、角度で、radians で指定します。
これらは、-2*PI(−2π)から 2*PI(2π) の範囲の値を使うことができます。 ここで、PI は定数πで、およそ 3.141593 です。
負の角度を指定すると、その値は、符号を変更して、線は、中心からその弧の点まで描きます。
end の角度は、start の角度より小さくてもかまいません。
startend を指定しない場合は、完全な円/楕円が描かれます。
start を指定して、end を指定しない場合は、end は、2*PI(2π) として描画します。
end を指定して、start を指定しない場合は、start0.0 として描画します。

aspect は、横縦比(アスペクトレシオ)、または、x 方向の半径に対する、y 方向の半径の比率です。
もし省略されれば、ScreenRes モードのためのデフォルトは、1.0 です。その一方、Screen モードについては、デフォルト値は、画面上に完全な円を描くのに必要な値です。ピクセル縦横比は保持されます。
この値は、以下のように計算できます:

ratio = (y_radius / x_radius) * pixel_aspect_ratio
比率 = (y_半径  / x_半径 ) * 画素横縦比

ここで、pixel_aspect_ratio (画素横縦比)は、現在のモードの高さに対する、現在のモードの幅の比率です。横縦比4:3の標準のモニターを仮定しています。
横縦比(アスペクトレシオ)が、1.0 未満の場合は、半径は、x軸方向の半径の長さを基準とした比率が設定されます。
横縦比に、1.0 以上を指定すると、半径は、y軸の方向の半径を基準とした比率になります。

F は、塗りつぶし(fill)指定の旗(フラグ)です。
この旗(フラグ)を指定すると、円/楕円は、選択された色で、塗りつぶされます。
これは、完全な円/楕円を描いているときだけ有効です。弧を描いている場合には、この旗(フラグ)は効き目がありません。

WindowView (Graphics) で設定される、カスタム座標システムセットは、描画に影響します。また、View によって設定される切り取りも、適用されます。
Circle が、描画を終わったとき、描画カーソル位置は、指定された中心に設定されます。

注: Circle で描かれた曲線は、一部の場所で画素を描き過ぎる可能性があります。
したがって、透明色を(GFX_ALPHA_PRIMITIVES オプション・フラグと組み合わせて)使うと、これらの、描き過ぎの画素の結果の(混合の)色が影響を受けます。

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

' 640x480モード、256の色を設定
Screen 18

' 真ん中に、円を描きます
Circle (320, 240), 200, 15

' 塗りつぶした楕円を描きます
Circle (320, 240), 200, 2, , , 0.2, F

' 小さい弧を描きます
Circle (320, 240), 200, 4, 0.83, 1.67, 3

Sleep




例:
(透明色を使って円を塗る)

Circle
Merick さんがコミュニティ掲示板に投稿しているプログラムです。

'wrong alpha Color
'https://freebasic.net/forum/viewtopic.php?t=22229
'by Merick ≫ Feb 07, 2014 2:35 

#Include "fbgfx.bi"

Dim As Any Ptr imags

Using fb
ScreenRes 400,400,32,,GFX_SHAPED_WINDOW
Color RGBA(255,0,255,255),RGBA(255,0,255,255)
Cls

imags= ImageCreate( 400, 400 )
Circle imags,(100,100),25,RGBA(243,50,133,65),,,,f
Circle imags,(100,120),25,RGBA(123,150,233,65),,,,f

Dim As UByte i
Dim As String k

While k = ""
   k = Inkey
   i += 1
   Put(0,0),imags,Alpha,255     ' 普通の色
   Put(120,120),imags,Alpha, i  ' alpha 透明色。
   'アルファ値が上がると、円を介して表示されるピンク色が元の色に戻ります。
   Sleep 5
   Cls
Wend

Sleep


QBとの違い:

参考:
2次元 描画関数に戻る
←リンク元に戻る プログラム開発関連に戻る

ページ歴史:2019-04-12 16:33:42
日本語翻訳:WATANABE Makoto、原文著作者:SysOp

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

表示-非営利-継承