概要

[Bitmap]クラスに平面図形描画用のメソッドを追加します。

スクリーンショット

ScreenShot
マターリと機能を試してみました。

更新履歴

2005/08/15

扇形(draw_pie)を追加。

2005/08/11

新規作成。

スクリプト

KGC_Drawing 2D

使用法

draw_text等と同様、 bitmap.draw_line(0, 0, 100, 50, Color.new(255, 255, 255)) bitmap.draw_connect_line(Pen.new(Color.new(255, 255, 255), 1), Point.new(0, 0), Point.new(100, 50)) bitmap.draw_polygon(200, 200, 150, 6, Color.new(255, 255, 0)) のように使用できます。

Pen.new(color, size) で、[Pen]クラスのインスタンスを生成します。
[Pen]クラスは、「描画色・太さ」を保持することができます。
各メソッドには、太さを指定する項目が無いため、太い線を描画するには[Pen]クラスを使用する必要があります。

Point.new(x, y) で、[Point]構造体を初期化します。
[Point]構造体は、座標を示すx, yを同時に保持することができます。
各メソッドの多くは、座標を直接指定する以外に、[Point]構造体による指定にも対応しています。
(引数のpt1, pt2等は[Point]構造体)

以下は搭載メソッドの一覧です。

直線を描画します。
draw_line(x, y, dx, dy, color)
draw_line(pt1, pt2, color)
draw_line(x, y, dx, dy, pen)
draw_line(pt1, pt2, pen)
グラデーション直線を描画します。
draw_grad_line(x, y, dx, dy, st_color, end_color)
draw_grad_line(pt1, pt2, st_color, end_color)
draw_grad_line(x, y, dx, dy, st_pen, end_pen)
draw_grad_line(pt1, pt2, st_pen, end_pen)
塗り潰しの無い矩形を描画します。
draw_rect(x, y, width, height, color)
draw_rect(rect, color)
draw_rect(x, y, width, height, pen)
draw_rect(rect, pen)
各点(pt1, pt2, ...)を結んだ折れ線を描画します。
draw_connect_line(pen, pt1, pt2, ...)
x, y (pt) 中心、半径 r の円に内接する頂点 vertex 個の多角形を描画します。
draw_polygon(x, y, r, vertex, color)
draw_polygon(pt, r, vertex, color)
draw_polygon(x, y, r, vertex, pen)
draw_polygon(pt, r, vertex, pen)
x, y (pt) を中心として、開始角から終了角まで半径 r の円弧を描画します。
draw_arc(x, y, r, st_ang, end_ang, color)
draw_arc(pt, r, st_ang, end_ang, color)
draw_arc(x, y, r, st_ang, end_ang, pen)
draw_arc(pt, r, st_ang, end_ang, pen)
x, y (pt) を中心として、開始角から終了角まで半径 r の扇形を描画します。
draw_pie(x, y, r, st_ang, end_ang, color)
draw_pie(pt, r, st_ang, end_ang, color)
draw_pie(x, y, r, st_ang, end_ang, pen)
draw_pie(pt, r, st_ang, end_ang, pen)
x, y (pt) を中心に半径 r の円を描画します。
draw_circle(x, y, r, color)
draw_circle(pt, r, color)
draw_circle(x, y, r, pen)
draw_circle(pt, r, pen)
x, y (pt) を中心として、幅 w 、高さ h の楕円を描画します。
draw_ellipse(x, y, w, h, color)
draw_ellipse(pt, w, h, color)
draw_ellipse(x, y, w, h, pen)
draw_ellipse(pt, w, h, pen)

引数に2つ以上の形式が存在するメソッドは、いずれの形式で指定しても同様に動作します。
メソッド引数の詳細は、スクリプト中のコメントを参照してください。