さらに描画のおはなし - 2 / 2 -
static void Graphix_TransformSimple(GraphixApplet* app)
{
IShell* shell = app->a.m_pIShell;
IDisplay* display = app->a.m_pIDisplay;
IBitmap* dev;
IBitmap* tmp;
IBitmap* bmp;
ITransform* transform;
// 画面を緑色でクリア
IDISPLAY_SetColor(display,CLR_USER_BACKGROUND,MAKE_RGB(0xCC,0xFF,0xCC));
IDISPLAY_ClearScreen(display);
// デバイスのビットマップを取得
IDISPLAY_GetDeviceBitmap(display,&dev);
// デバイスビットマップと互換性のある作業用ビットマップを作成
IBITMAP_CreateCompatibleBitmap(dev,&tmp,100,100);
// リソース ファイルからビットマップを取得
bmp = ISHELL_LoadResBitmap(shell,GRAPHIX_RES_FILE,TILE);
if (bmp != NULL) {
// 作業用ビットマップにビットマップを描画
IBITMAP_BltIn(tmp,0,0,100,100,bmp,0,0,AEE_RO_COPY);
// デバイスビットマップから ITransform インターフェースを作成
IBITMAP_QueryInterface(dev,AEECLSID_TRANSFORM,&transform);
// 作業用ビットマップからデバイスビットマップへ変形転送
ITRANSFORM_TransformBltSimple(transform, // オブジェクト
0, // 転送先の X 座標
0, // 転送先の Y 座標
tmp, // 転送元のビットマップ
0, // 転送元の転送開始 X 座標
0, // 転送元の転送開始 Y 座標
100, // 転送元の幅
100, // 転送元の高さ
TRANSFORM_ROTATE_90 | TRANSFORM_SCALE_2, // 変形方法
COMPOSITE_OPAQUE); // 転送モード
// ITransform インターフェース破棄
ITRANSFORM_Release(transform);
// ビットマップ破棄
IBITMAP_Release(bmp);
}
// 画面更新
IDISPLAY_Update(display);
// 作業用ビットマップ破棄
IBITMAP_Release(tmp);
// デバイスビットマップ破棄
IBITMAP_Release(dev);
return;
}