ホーム > デベロッパ > BREW プログラミング入門 > さらに描画のおはなし > - 2 / 2 -

さらに描画のおはなし - 2 / 2 -

static void Graphix_TransformComplex(GraphixApplet* app)
{
  IShell*  shell = app->a.m_pIShell;
  IDisplay*  display = app->a.m_pIDisplay;
  IBitmap*  dev;
  IBitmap*  tmp;
  IBitmap*  bmp;
  ITransform*  transform;
  AEETransformMatrix  matrix;

  // 画面を緑色でクリア
  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);

    // 変形マトリックスを設定
    matrix.A = 192;   // 256 * 1.5 * cos(60)
    matrix.B = 332;   // 256 * 1.5 * sin(60)
    matrix.C = -332;  // 256 * 1.5 * -sin(60)
    matrix.D = 192;   // 256 * 1.5 * cos(60)

    // 作業用ビットマップからデバイスビットマップへ変形転送
    ITRANSFORM_TransformBltComplex(transform,         // オブジェクト
                                   0,                 // 転送先の X 座標
                                   0,                 // 転送先の Y 座標
                                   tmp,               // 転送元のビットマップ
                                   0,                 // 転送元の転送開始 X 座標
                                   0,                 // 転送元の転送開始 Y 座標
                                   100,               // 転送元の幅
                                   100,               // 転送元の高さ
                                   &matrix,           // 変形マトリックス
                                   COMPOSITE_OPAQUE); // 転送モード

    // ITransform インターフェース破棄
    ITRANSFORM_Release(transform);

    // ビットマップ破棄
    IBITMAP_Release(bmp);
  }

  // 画面更新
  IDISPLAY_Update(display);

  // 作業用ビットマップ破棄
  IBITMAP_Release(tmp);

  // デバイスビットマップ破棄
  IBITMAP_Release(dev);
  return;
}