title: Phi::Pen
author: YOSHIDA Kazuhiro
mailto: moriq@moriq.com

1. Phi::Pen

Phi::Canvas# にイメージを描画する Windows ペンの属性

: 参照
  Phi::Canvas#pen

1.1. properties

: color : Fixnum (Color)
  キャンバス上に描画する線の色

  線または形状アウトラインの描画に使う色を変更するために %c:color% を設定します。ペンがどのように色を使うかは #mode と #style で指定します。

: handle : Fixnum (HPen)
  Windows ペンオブジェクトハンドル

  ペンオブジェクトハンドルが必要な Windows API 関数を呼び出すときには %c:handle% プロパティを使ってください。 %c:handle% プロパティはキャンバス上のデバイスコンテキストで現在選択されている Windows ハンドルです。

: mode : Fixnum (PenMode)
  キャンバス上に線を描画する方法

  描かれる線の色をキャンバス上の色とどのように対応させるかを指定します。以下に %c:mode% の効果を示します。

  : PM_BLACK
    必ず黒
  : PM_WHITE
    必ず白
  : PM_NOP
    変化なし
  : PM_NOT
    画面色の反転色
  : PM_COPY
    Color プロパティで指定するペン色
  : PM_NOT_COPY
    ペン色の反転色
  : PM_MERGE_PEN_NOT
    ペン色と画面反転色の組み合わせ
  : PM_MASK_PEN_NOT
    ペン色と画面反転色のどちらにも共通な色の組み合わせ
  : PM_MERGE_NOT_PEN
    画面色とペン反転色の組み合わせ
  : PM_MASK_NOT_PEN
    画面色とペン反転色のどちらにも共通な色の組み合わせ
  : PM_MERGE
    ペン色と画面色の組み合わせ
  : PM_NOT_MERGE
    ペン色と画面色の %c:PM_MERGE% 組み合わせの反転
  : PM_MASK
    ペン色と画面色のどちらにも共通な色の組み合わせ
  : PM_NOT_MASK
    ペン色と画面色のどちらにも共通な色の %c:PM_MASK% 組み合わせの反転
  : PM_XOR
    ペン色または画面色の ( 両方ではなく ) どちらかの色の組み合わせ
  : PM_NOT_XOR
    ペン色または画面色の ( 両方ではなく ) どちらかの色の %c:PM_XOR% 組み合わせの反転

: style : Fixnum (PenStyle)
  ペンで線を描画するスタイル

  %c:style% は，点線や破線を描画したり，または図形の枠として表示される線を省略したりできます。以下に %c:style% の値を示します。

  : PS_SOLID
    実線
  : PS_DASH
    破線
  : PS_DOT
    点線
  : PS_DASH_DOT
    一点鎖線
  : PS_DASH_DOT_DOT
    二点鎖線
  : PS_CLEAR
    線は描画されない ( 現在のペンを使って図形の周囲にアウトラインを描画する線を省略するのに使う )
  : PS_INSIDE_FRAME
    実線。ただし #width が 1 より大きい場合には中間色を使う場合がある

  : 注意
    PS_INSIDE_FRAME スタイルだけはカラーテーブルにない #color と一致させるために中間色を作成します。他のスタイルはすべて Windows のカラーテーブルからもっとも近い色を選択します。

  : 注意
    %c:width% が 1 でないときには PS_DOT または PS_DASH は使えません。

: width : Fixnum
  ペンの幅 ( ピクセル単位 )

  %c:width% は線幅を設定できます。 %c:width% を 1 未満に設定すると，ペンは %c:width% が 1 のときの幅になります。

  : 注意
    %c:width% の値は %c:style% の値が有効かどうかを左右します。

1.1. methods

: assign(source) : nil
  別の Phi::Pen オブジェクトのペンのプロパティを割り当てます。

  %v:source% が別の %c:Pen% オブジェクトであると識別した場合， %c:assign% は %v:source% の #color , #width , #style , #mode をコピーします。 %c:Pen% でない場合には，継承メソッドが Persistent#assign_to で %c:Pen% オブジェクトに書き込めるオブジェクトからプロパティをコピーします。
