クラス:
wxBitmap クラスはモノクロとカラーの両方について、プラットフォームに依存するビットマップの概念をカプセル化するものです。既存のファイルから wxBitmap オブジェクトを作成するのにプラットフォーム独自の関数が提供されていますが、ときにこれは条件付きコンパイルを必要とすることがあります。
動的に作成した、またはファイルから読み込んだビットマップはメモリデバイスコンテキスト (wxMemoryDC のインスタンス) で選択可能です。これにより、wxDC::Blit() を使用してビットマップをウィンドウやメモリデバイスコンテキストにコピーしたり、描画先として使用したりすることができます。
ビットマップへの描画の例は wxMemoryDC を参照してください。
小さなビットマップやアイコンに使用される XPM について、wxWidgets はすべてのプラットフォームで対応しています。XPM は C のコードであるため、以下のようにして XPM をインラインでインクルードしたり、実行時に読み込むことが可能です。
#include "sample.xpm"
Windows では .ico リソースを、それ以外のプラットフォームでは xpm を使用したいと思うことがあるかもしれません。(例えば、Windows の対応している多重解像度のアイコンを有効活用するためにです)
wxICON() マクロを使用すると、適切なプラットフォームでは XPM を、Windows ではアイコンリソースを利用してアイコンを作成することができます:
wxIcon icon(wxICON(sample)); // 上の行はこれと同等: #if defined(__WXGTK__) || defined(__WXMOTIF__) wxIcon icon(sample_xpm); #endif #if defined(__WXMSW__) wxIcon icon("sample"); #endif
これと対応するマクロに wxBITMAP() マクロがあり、wxICON() がアイコンを作成するのと同じ方法でビットマップを作成することができます。このマクロは Windows と OS2 ではリソース内に、それ以外のプラットフォームでは XPM ファイルとしてビットマップが存在するものとして処理を行います。(もちろん、XPM を使用するときはこのマクロを使用する前に対応するファイルをインクルードしておく必要があり、ビットマップの名前は Windows のリソース名の末尾に _xpm
を付けたものにしてください) 以下に例を示します:
// ビットマップを作成する、簡単で移植性のある方法 wxBitmap bmp(wxBITMAP(bmpname)); // これは以下のコードと大体同じです #if defined(__WXMSW__) || defined(__WXPM__) wxBitmap bmp("bmpname", wxBITMAP_TYPE_BMP_RESOURCE); #else // Unix wxBitmap bmp(bmpname_xpm, wxBITMAP_TYPE_XPM); #endif
常に wxICON() マクロと wxBITMAP() マクロを使用するべきです。なぜなら、これらのマクロはどのプラットフォームでも動作しますし (上記のコードは wxMac、wxX11、... に対応していません)、#ifdef を使用したものより簡潔で明確だからです。もっと良い方法はすべてのプラットフォームで同じ XPM を使用することです。
各プラットフォームで対応している形式の一覧を以下に示します。対応していない、または部分的にしか実装されていない形式は自動的に wxImage を使用してデータの読み込みと wxBitmap 形式への変換が行われることに注意してください。wxWidgets で画像を読み込む場合、リソース (XPM ファイルや Windows のリソース) から読み込む場合を除くと、wxImage を利用した方が良いことにも注意してください。
また、wxImage 用の画像形式ハンドラは wxBitmap のものより簡単に書くことができます。なぜなら、wxImage はすべてのプラットフォームでただひとつの形式を使用するのに対し、wxBitmap は色深度やプラットフォームに応じて様々な形式でピクセルデータを格納できるためです。
Windows では wxBitmap は以下の形式を読み込むことができます:
wxGTK では wxBitmap は以下の形式を読み込むことができます:
wxMotif と wxX11 では wxBitmap は以下の形式を読み込むことができます:
Windows では wxIcon は以下の形式を読み込むことができます:
wxGTK では wxIcon は以下の形式を読み込むことができます:
wxMotif と wxX11 では wxImage は以下の形式を読み込むことができます:
Windows では wxCursor は以下の形式を読み込むことができます:
wxGTK では wxCursor は (既存のカーソルに加えて) 以下の形式を読み込むことができます:
wxMotif と wxX11 では wxCursor は以下の形式を読み込むことができます:
拡張性のため、ビットマップ形式の読み書きは wxBitmap クラスで実装されておらず、wxBitmapHandler を継承した多数のハンドラクラスで実装されています。これらのハンドラの静的な一覧が存在し、ファイルの読み書きが要求された時に wxBitmap がこの一覧を調べます。
いくつかのハンドラは標準で提供されていますが、特別な要件がある場合に自分で書いたハンドラやサードパーティーのハンドラを使用して wxBitmap クラスを初期化したいと思うかもしれません。
wxBitmap のハンドラを追加する場合、ハンドラクラスを実装しているヘッダファイルをインクルードし、静的関数 wxBitmap::AddHandler() を呼ぶ必要があります。