[ top ] [ prev ] [ up ] [ next ]

Phi::Canvas

super class

Object

class methods

new : Phi::Canvas

properties

brush : Phi::Brush
図形と背景を塗りつぶすのに使う brush

canvas_orientation : Fixnum
CO_LEFT_TO_RIGHT
CO_RIGHT_TO_LEFT
clip_rect : Phi::Rect
クリッピングする長方形の境界

copy_mode : Fixnum
graphic image をどのように copy するか

copy_rect , draw で使われる。

image を合成するとか,異なる copy_mode で複数の image を結合して bitmap の一部を透過させるといった効果を表現できる。

CM_BLACKNESS
キャンバス上のコピー先の四角形を黒色で塗りつぶす
CM_DST_INVERT
キャンバス上のイメージを反転して,ソースを無視する
CM_MERGE_COPY
AND 論理演算子を使ってキャンバス上のイメージとコピー元のビットマップを結合する
CM_MERGE_PAINT
反転したコピー元ビットマップとキャンバス上のイメージを OR 論理演算子を使って結合する
CM_NOT_SRC_COPY
反転したコピー元ビットマップをキャンバスにコピーする
CM_NOT_SRC_ERASE
OR 論理演算子を使ってキャンバス上のイメージとコピー元のビットマップを結合して,その結果を反転する
CM_PAT_COPY
コピー元の模様をキャンバスにコピーする
CM_PAT_INVERT
XOR 論理演算子を使ってコピー元の模様とキャンバス上のイメージを結合する
CM_PAT_PAINT
反転したコピー元ビットマップとその模様を OR 論理演算子を使って結合する。この演算結果とキャンバス上のイメージを OR 論理演算子を使って結合する
CM_SRC_AND
キャンバス上のイメージとコピー元のビットマップを AND 論理演算子を使って結合する
CM_SRC_COPY
コピー元のビットマップをキャンバスにコピーする
CM_SRC_ERASE
キャンバス上のイメージを反転し,その結果とコピー元ビットマップを AND 論理演算子を使って結合する
CM_SRC_INVERT
キャンバス上のイメージとコピー元のビットマップを XOR 論理演算子を使って結合する
CM_SRC_PAINT
キャンバス上のイメージとコピー元ビットマップのピクセルを OR 論理演算子を使って結合する
CM_WHITENESS
キャンバス上のコピー先の四角形を白色で塗りつぶす

font : Phi::Font
テキストを書くときに使う font

lock_count : Fixnum
ロックされた回数

pen : Phi::Pen
線と縁の描画に使う pen

pen_pos : Phi::Point
pen の現在の描画位置

self[x, y] : Fixnum
clip_rect の pixel

text_flags : Fixnum
テキストの書き方

text_out または text_rect を呼び出したときにテキストを描画する方法を指定できる。

以下の定数を組み合わせて作る。

ETO_CLIPPED
指定された長方形内に収まるテキストだけが表示される。このフラグは text_rect の呼び出し時に自動的に追加される。 text_out を使ってテキストを書いているときは,描画境界が text_extent で指定されるため,このフラグは有効ではない

ETO_OPAQUE
テキストを不透明な背景色で描画する。このフラグを使うと,処理速度は改善されるが,テキスト長方形の背後のイメージを透かして見ることはできない

ETO_RTLREADING
テキスト文字列を右から左に表示する。これは, Windows の中東バージョンのみで使うことができる。 , 中東では,テキストを右から左に書く。これはたいてい, canvas_orientationCO_RIGHT_TO_LEFT と組み合わせて使う

ETO_GLYPH_INDEX
テキストは, Windows GDI によって直接解析される文字配置コードから構成される。グリフインデックス付けは TrueType フォントのみに適用されるが,フラグをほかのフォントと使って GDI が言語処理なしでテキスト文字列を直接処理すべきであることを示せる。詳細については, Windows GDI のドキュメントを参照のこと

ETO_IGNORELANGUAGE
これは,ドキュメントで解説されていない Microsoft フラグ。情報が提供されたときに Microsoft のドキュメントの更新内容をチェックのこと

ETO_NUMERICSLOCAL
これは,ドキュメントで解説されていない Microsoft フラグ。情報を利用可能になったときに Microsoft のドキュメントの更新内容をチェックのこと

ETO_NUMERICSLATIN
これは,ドキュメントで解説されていない Microsoft フラグ。情報を利用可能になったときに Microsoft のドキュメントの更新内容をチェックのこと

methods

arc(x1, y1, x2, y2, x3, y3, x4, y4) : nil
arc(rect, x3, y3, x4, y4) : nil
指定した四角形と境を接する楕円の縁にそって弧を描画する。

弧は,座標 ( x1 , y1 ) および ( x2 , y2 ) と境界を接する楕円の一部である。

弧は,楕円の縁にそって始点から終点まで反時計回りに描画される。

始点は,楕円の中心点と座標 ( x3 , y3 ) によって指定される線と楕円との交点である。

終点は,楕円の中心点と座標 ( x4 , y4 ) によって指定される線と楕円との交点である。

pen で描画される。

chord(x1, y1, x2, y2, x3, y3, x4, y4) : nil
chord(rect, x3, y3, x4, y4) : nil
線と楕円の交点で表現される弓形を描画する。

弓形は,座標 ( x1 , y1 ) および ( x2 , y2 ) と境界を接する楕円の一部で構成される。楕円は,座標 ( x3 , y3 ) および ( x4 , y4 ) を通る線により分割される。線と楕円との交点を (x3', y3') および (x4', y4') とすると,弓形は (x3', y3') から始まり,反時計回りに楕円にそって (x4', y4') を通り,まっすぐ (x3', y3') に戻る。

弓形の縁は pen で描画され,内部は brush で塗りつぶされる。

copy_rect(dest, canvas, source) : nil
self の image の一部を canvas に copy する。

rect : Phi::Rect
image が copy される self 上の領域
canvas: Phi::Canvas
copy 元 image が存在する canvas
source: Phi::Rect
canvas の領域

sourcecopy_mode の値を使って copy される。

draw(x, y, graphic) : nil
graphic を座標 ( x , y ) に描画する。

drawPhi::Graphic#draw を呼び出す。

graphicPhi::Bitmap , Phi::Icon , Phi::Metafile のいずれかである。 graphicPhi::Bitmap オブジェクトの場合, copy_mode の値を使って描画される。

draw_focus_rect(rect) : nil
focus を受け取ったことを示すのに使うスタイルで四角形を描画する。 control が focus を取得または喪失したときに呼び出す。

draw_focus_rectXOR 関数を使うので,同じ四角形を指定して呼び出すと四角形は消える。

rect の領域をスクロールするには, draw_focus_rect を呼び出して四角形を消し,領域をスクロールしてから draw_focus_rect を呼び出して四角形を新しい位置に描画する。

ellipse(x1, y1, x2, y2) : nil
ellipse(rect) : nil
alias draw_oval

外接長方形で定義される楕円をキャンバスに描画する。外接長方形が正方形の場合は,円が描画される。楕円のアウトラインは pen の値を使って描画され,内部は brush の値を使って塗りつぶされる。

fill_rect(rect) : nil
キャンバス上の指定した四角形を brush で塗りつぶす。四角形の左と上の端は領域に含まれるが,右と下の端は含まれない。

rect : Phi::Rect
flood_fill(x, y, color, fill_style) : nil
座標 ( x , y ) から color で指定する色境界まで brush で塗りつぶす。

fill_style
color の領域を塗りつぶすか, color 以外の領域を塗りつぶすか

FS_SURFACE
color 以外の色に達するまで, color の色を持つすべての領域を塗りつぶす。
FS_BORDER
color の色に達するまで, color 以外の色を持つすべての領域を塗りつぶす。

self[] を使うと, FS_SURFACEfill_style を使うときに,座標 ( x , y ) の色の正確な値を取得できる。同様に, fill_styleFS_BORDER のときは,境界の座標が分かっている場合に, self[] を使って境界色の正確な値を取得できる。

frame_rect(rect) : nil
長方形を描画する。

rect の周囲に 1 ピクセル幅の境界線を描画できる。 frame_rect は, rect の内部を brush の模様で塗りつぶさない。

line_to(x, y) : nil
pen_pos で指定される位置から,座標 ( x , y ) まで線を引き, pen_pos を ( x , y ) に設定する。

move_to(x, y) : nil
pen_pos を座標 ( x , y ) に変更する。

pie(x1, y1, x2, y2, x3, y3, x4, y4) : nil
pie(rect, x3, y3, x4, y4) : nil
キャンバス上の四角形 ( x1 , y1 ) と ( x2 , y2 ) に外接する楕円の扇形を描画する。

扇形は,座標 ( x1 , y1 ) と ( x2 , y2 ) で形成される長方形と外接する楕円によって定義される。描画される扇形の形は,楕円の中心から始まって座標 ( x3 , y3 ) と ( x4 , y4 ) を通過する 2 つの線で決まる。

輪郭は pen で描画され,内部は brush で塗りつぶされる。

poly_bezier(points) : nil
ベジェ曲線を描画する。

points で指定したエンドポイントおよびコントロールポイントを使って,立体ベジェ曲線を描画する。

最初の曲線は,最初の点と 4 番目の点を結んで描画され, 2 番目と 3 番目の点はコントロールポイントとして使われる。

シーケンスで後続する各曲線は,必ずさらに 3 個の点を必要とする。

先行する曲線の終点は,次の曲線の始点として,次の 2 個の点はコントロールポイントとして, 3 番目の点が終点として使われる。

現行のペンを使って線を描画する。

points : array of Point
poly_bezier_to(points) : nil
ベジェ曲線を描画し, pen_pos の値を更新する。

points で指定したエンドポイントおよびコントロールポイントを使って,立体ベジェ曲線を描画する。

最初の曲線は,最初の点と 4 番目の点を結んで描画され, 2 番目と 3 番目の点はコントロールポイントとして使われる。

シーケンスで後続する各曲線は,必ずさらに 3 個の点を必要とする。

先行する曲線の終点は次の曲線の始点として,次の 2 個の点はコントロールポイントとして, 3 番目の点が終点として使われる。

現行のペンを使って線を描画し, pen_pos の値を最後のエンドポイントの値に更新する。

points : array of Point
polygon(points) : nil
与えられた点を結んでキャンバス上に一連の線を描画してから,最後の点から最初の点へ線を描画して閉じた図形にする。

pen の値を使ってキャンバス上に閉じた多角形を描画できる。図形が完成すると, brush の値を使ってその図形を塗りつぶす。

キャンバスに多角形を塗りつぶさずに描画するには, polyline を使って,最後に始点をもう一度指定する。

polyline(points) : nil
現在のペンを使って, points で渡された個々の点を結んでキャンバス上に連続線を描画する。

polyline を呼び出すと,キャンバス上の各点を結ぶことができる。点が 2 つしかない場合は 1 本だけ線を引くことになる。最初の点の値で move_to を呼び出して,連続する各点で line_to を繰り返し呼び出せば, polyline を使うのと同じである。 polylineline_to とは違って pen_pos の値は変更しない。

rectangle(x1, y1, x2, y2) : nil
rectangle(rect) : nil
alias draw_rect

rectangle を呼び出すと, pen を使って長方形を描画して,その図形を brush で塗りつぶすことができる。長方形の座標は 4 つの point かひとつの rect で指定できる。

現在のペンで境界を描画しないで長方形部分を塗りつぶすには fill_rect を使う。長方形部分を塗りつぶさずに外枠を描画するには frame_rectpolygon を使う。角の丸い長方形を描画するには round_rect を使う。

round_rect(x1, y1, x2, y2, x3, y3) : nil
角の丸い長方形をキャンバス上に描画する。

角の丸い長方形を pen で描画して,その図形を brush で塗りつぶすことができる。長方形の端は座標 ( x1 , y1 ), ( x2 , y1 ), ( x2 , y2 ), ( x1 , y2 ) で定義されるが,その角は丸く削られる。丸く削れらた角の曲率は,幅 x3 ,高さ y3 の楕円の曲率と一致する。

楕円を描画するには ellipse を使う。正方形を描画するには rectangle を使う。

stretch_draw(rect, graphic) : nil
rect で指定した四角形の中に収まるように graphic を描画する。

stretch_drawPhi::Graphic#draw を呼び出す。

graphic は image の四角形への収め方を指定する。これにより, image の伸縮率や縦横比が変更される場合もある。

graphic を実際の size で描画するには, stretch_draw ではなく draw を使う。

graphicPhi::Bitmap , Phi::Icon , Phi::Metafile のいずれかである。 graphic が Bitmap object の場合, bitmap は copy_mode の値を使って描画される。

rect : Phi::Rect
graphic : Phi::Graphic
text_extent(text) : Size
font で描画された文字列の幅と高さをピクセル数で返す。

text_width(text) : Fixnum
font で描画された文字列の幅をピクセル単位で返す。 text_extent#cx と同じ。

text : String
text_height(text) : Fixnum
font で描画された文字列の高さをピクセル単位で返す。 text_extent#cy と同じ。

text : String
text_rect(rect, x, y, text) : nil
四角形にクリッピングして文字列を書き込む。

四角形の外にはみ出してしまう文字列部分はクリッピングされ,画面上には表示されない。

rect : Phi::Rect
クリッピングする四角形

x, y : Fixnum
テキストの左上隅の位置

text : String
書き込む文字列

text_out(x, y, text) : nil
キャンバス上に文字列を描画して, pen_pos の値を文字列の最後の値に更新する。

lock { ... }
他の Delphi Thread がキャンバスに描画できないようにする。
author: YOSHIDA Kazuhiro
[ top ] [ prev ] [ up ] [ next ]