[ 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_orientation の
CO_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 の領域
source は copy_mode の値を使って copy される。
- draw(x, y, graphic) : nil
-
graphic を座標 ( x , y ) に描画する。
draw
は Phi::Graphic#draw を呼び出す。
graphic は Phi::Bitmap , Phi::Icon , Phi::Metafile のいずれかである。 graphic が Phi::Bitmap オブジェクトの場合, copy_mode の値を使って描画される。
- draw_focus_rect(rect) : nil
-
focus を受け取ったことを示すのに使うスタイルで四角形を描画する。 control が focus を取得または喪失したときに呼び出す。
draw_focus_rect
は XOR
関数を使うので,同じ四角形を指定して呼び出すと四角形は消える。
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_SURFACE
の fill_style を使うときに,座標 ( x , y ) の色の正確な値を取得できる。同様に, fill_style が FS_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
を使うのと同じである。 polyline
は line_to
とは違って pen_pos の値は変更しない。
- rectangle(x1, y1, x2, y2) : nil
-
- rectangle(rect) : nil
-
- alias draw_rect
-
rectangle
を呼び出すと, pen を使って長方形を描画して,その図形を brush で塗りつぶすことができる。長方形の座標は 4 つの point かひとつの rect で指定できる。
現在のペンで境界を描画しないで長方形部分を塗りつぶすには fill_rect を使う。長方形部分を塗りつぶさずに外枠を描画するには frame_rect か polygon を使う。角の丸い長方形を描画するには 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_draw
は Phi::Graphic#draw を呼び出す。
graphic は image の四角形への収め方を指定する。これにより, image の伸縮率や縦横比が変更される場合もある。
graphic を実際の size で描画するには, stretch_draw
ではなく draw を使う。
graphic は Phi::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 がキャンバスに描画できないようにする。
[ top ] [ prev ] [ up ] [ next ]