2006年02月20日

描画対象のグラフィックスディバイスの取り出しとフォントの設定

次に文字列を描画しますが、文字列の描画にはフォント情報が必要であり、フォント情報はグラフィックスディバイスクラスが管理をしています。そこで、グラフィックスディバイスのインスタンスを取得する必要があるのです。この一連の処理は、以下の形で行われています。

// 文字列の描画
CFont* iFont;
TTypefaceSupport myTypefaceSupport;
TFontSpec myFontspec(myTypefaceSupport.iTypeface.iName.Des(), 100 );

CGraphicsDevice* device= gc.Device();
User::LeaveIfError(
device->GetNearestFontInTwips(iFont, myFontspec));
gc.UseFont( iFont );

再描画のタイミング

 再描画を強制するためには、CCoeControl クラスにある DrawNow関数を呼び出します。今回のサンプルでは、以下の様に背景色を変更するときに、この関数を呼び出しています。

void CGraphicsTestContainer::ChangeBgColor()
{
if( bgColor == KRgbBlue )
bgColor = KRgbGray ;
else
bgColor = KRgbBlue ;
DrawNow();
}

ビットマップの使用について

 今回はサンプルとしては触れていませんが、ビットマップを画面に貼り付けることも可能です。ただし、注意が必要な点として、ビットマップはいわゆる Windows形式のビットマップから独自形式であるマルチビットマップ(拡張子:mbm)に変更する必要があります。最新のSDKであれば、プロジェクトの設定ファイルであるmmpファイルに使用するビットマップを記述すれば、ビルド時にマルチビットマップに変換をしてくれます。記述例としては下記のようになります。

START BITMAP graphicslab.mbm
HEADER
TARGETPATH ..\..\..\..\wins\c\system\apps\graphicslab
SOURCEPATH ..\bitmaps
SOURCE c12 background.bmp
SOURCE c12 ball.bmp
SOURCE c12 ball_mask.bmp
SOURCE c12 other_ball.bmp
SOURCE c12 other_ball_mask.bmp

 アプリケーションがビルドされると、筆者の環境では以下のパスにマルチビットマップのファイルができています。

C:\Symbian\8.0a\S60_2nd_FP2_J\epoc32\wins\c\System\
Apps\GRAPHICSLAB\graphicslab.mbm
-----
補足:筆者の環境では、以下のパスがエミュレータの
ファイルシステムのルートになっています。
-----
C:\Symbian\8.0a\S60_2nd_FP2_J\epoc32\wins

 このマルチビットマップ形式は「複数のビットマップファイルをひとつにまとめたもの」です。したがって、プログラム上で元のビットマップを取り出すには、そのインデックスを指定する必要があります。

 このインデックスの指定は、SDKディレクトリ以下のIncludeディレクトリに自動的にヘッダファイルを生成しますので、これを利用します(graphicslab.mbg:ファイル名はマルチビットマップファイル名と同一、ただし拡張子がmbgになる)。筆者の環境では以下に生成されています。

C:\Symbian\8.0a\S60_2nd_FP2_J\epoc32\include

 次回はTCP/IPを用いた通信について見ていく予定です。
posted by シンビアン at 10:32| Comment(0) | TrackBack(0) | Series60プログラミングテクニック | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/13500500

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。