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

1. Phi::Bitmap

Windows の HBITMAP と HPALETTE

%c:Phi::Bitmap% オブジェクトは，ビットマップグラフィックの内部イメージを保持し，描画時にパレットを自動的に管理する。ビットマップは強力なグラフィックオブジェクトであり，イメージの作成や操作 ( スクロール・回転・描画 ) を行ったり，メモリにまたはファイルとしてディスクに保存したりできる。

ビットマップをキャンバスに描画するには， Phi::Canvas#draw または Phi::Canvas#stretch_draw を呼び出し，引数として %c:Phi::Bitmap% を渡す。

%c:Phi::Bitmap% のコピーの作成は，イメージではなく単にハンドルがコピーされるだけなので，高速に行える。複数のハンドルを共有している %c:Phi::Bitmap% オブジェクトのイメージが変更される場合，修正 ( 書き込みコピー ) が実行される前にイメージが複製される。

1.1. properties

: canvas : Phi::Canvas
  ビットマップを表す描画面

  %c:canvas% は， Phi::Canvas# オブジェクトを利用してビットマップに対する描画を行うことができる。 %c:canvas% に描画すると，基になっているビットマップイメージのピクセルを効率よく変更できる。

: empty : Boolean
  ビットマップオブジェクトにグラフィックが含まれているかどうか

  %c:empty% を使うと，ビットマップがビットマップオブジェクトにロードされたか， #canvas を使って描画されたかを確認できる。

  : true
    ビットマップイメージが空，つまりビットマップオブジェクトにビットマップが含まれていない
  : false
    ビットマップイメージが空ではない，つまりビットマップオブジェクトにビットマップが含まれている

1.1. methods

: assign(source) : nil
  新しいビットマップイメージをビットマップオブジェクトに格納する。

  : source : Persistent

  %c:assign% は， %v:source% の内部のビットマップイメージをビットマップオブジェクトに格納する。

  その後， %c:assign% は，継承された %c:assign% を呼び出す。ビットマップを変更する必要がある場合，ビットマップイメージが複製されてから変更 ( 書き込みコピー ) が実行される。

  : 参照
    Phi::Picture#graphic
