前のページ次のページ上に戻るホーム BREW C++ ライブラリ & GUI フレームワーク : SophiaFramework 3.0
SFBTransform
ITransform インターフェイスのラッパークラスです。
#include <SFBTransform.h.hpp>
class SFBTransform : public SFBQuery;
SFMTYPEDEFWRAPPER(SFBTransform)

継承図

SFBTransform クラスの継承図

協調図

SFBTransform クラスの協調図

参照

BREW API ITransform

バグ情報

インスタンスの作成
Tips すべて

ITransform オブジェクトは、IBitmap のオブジェクトから QueryInterface して下さい。

DIB のサポート
Tips すべて

ITransform のサポートは実装依存になります。 現在、SDK2.0.1.5 上では、DIB においては transform オペレーションをサポートしておりません。 DDB の IBitmap オブジェクトのみ、transform に対応しております。 実機上で何がサポートされるかは実装に依存します。

メンバ

パブリック関数
static
SFBTransformSmp
NewInstance( SFBBitmapSmpConstRef bmp )
SFBTransform クラスのインスタンスを取得します。
SFCError TransformBltComplex( SInt32 xDest , SInt32 yDest , SFBBitmapSmpConstRef bmpSrc , SInt32 xSrc , SInt32 ySrc , UInt32 dxSrc , UInt32 dySrc , AEETransformMatrix const & transformMatrix , UInt08 composite = COMPOSITE_OPAQUE )
TransformBltComplex( SFXGridConstRef gridDest , SFBBitmapSmpConstRef bmpSrc , SFXRectangleConstRef rectSrc , AEETransformMatrix const & transformMatrix , UInt08 composite = COMPOSITE_OPAQUE )
AEETransformMatrix 構造体の情報を元にして指定されたビットマップを変形し、 転送先のビットマップに描画します。
SFCError TransformBltSimple( SInt32 xDest , SInt32 yDest , SFBBitmapSmpConstRef bmpSrc , SInt32 xSrc , SInt32 ySrc , UInt32 dxSrc , UInt32 dySrc , UInt16 transform , UInt08 composite = COMPOSITE_OPAQUE )
TransformBltSimple( SFXGridConstRef gridDest , SFBBitmapSmpConstRef bmpSrc , SFXRectangleConstRef rectSrc , UInt16 transform , UInt08 composite = COMPOSITE_OPAQUE )
フラグの値を元にして指定されたビットマップを変形し、 転送先のビットマップに描画します。
SFCError QueryInterface( AEECLSID clsid , VoidHandle handle ) (SFBQuery から継承)
QueryInterface( AEECLSID clsid , SFBBaseSmpPtr handle ) (SFBQuery から継承)
このオブジェクトからの別の API を問い合わせます。
SFBBaseSmp QueryInterface( AEECLSID clsid ) (SFBQuery から継承)
このオブジェクトからの別の API を問い合わせます。
Void Self( AEECLSID clsidReq , SFBQuerySmpPtr clone , AEECLSID clsidImp ) (SFBQuery から継承)
オブジェクトを単一インタフェースで実装する際に使用します。
SFBQuerySmp Self( AEECLSID clsidReq , AEECLSID clsidImp ) (SFBQuery から継承)
オブジェクトを単一インタフェースで実装する際に使用します。

SFBTransform::NewInstance
SFBTransform クラスのインスタンスを取得します。
[ public, static ]
SFBTransformSmp NewInstance(
    SFBBitmapSmpConstRef bmp   // SFBBitmap クラスのインスタンス
);

解説

引数に指定された SFBBitmap クラスのインスタンスから、 SFBTransform クラスのインスタンスを取得して返します。

参照

SFBBitmap


SFBTransform::TransformBltComplex
AEETransformMatrix 構造体の情報を元にして指定されたビットマップを変形し、 転送先のビットマップに描画します。
[ public ]
SFCError TransformBltComplex(
    SInt32 xDest                                 // 転送先の長方形の左上の X 座標
    SInt32 yDest                                 // 転送先の長方形の左上の Y 座標
    SFBBitmapSmpConstRef bmpSrc                  // 転送元のビットマップ
    SInt32 xSrc                                  // 転送元の長方形の左上の X 座標
    SInt32 ySrc                                  // 転送元の長方形の左上の Y 座標
    UInt32 dxSrc                                 // 転送元の長方形の幅
    UInt32 dySrc                                 // 転送元の長方形の高さ
    AEETransformMatrix const & transformMatrix   // AEETransformMatrix 構造体を指すポインタ
    UInt08 composite = COMPOSITE_OPAQUE          // プロパティ
);
[ public ]
SFCError TransformBltComplex(
    SFXGridConstRef gridDest                     // 転送先の長方形の左上の座標
    SFBBitmapSmpConstRef bmpSrc                  // 転送元のビットマップ
    SFXRectangleConstRef rectSrc                 // 転送元の長方形
    AEETransformMatrix const & transformMatrix   // AEETransformMatrix 構造体を指すポインタ
    UInt08 composite = COMPOSITE_OPAQUE          // プロパティ
);

使用例

リソース ファイルから読み込んだビットマップを 1.5 倍に拡大して描画します。

// リソース ファイルから読み込むビットマップ画像のリソース ID
#define IDB_MY_PICTURE  0x0001

SFXGraphicsPtr           graphic = SFXGraphics::GetInstance();
SFBShellSmp              shell   = SFBShell::GetInstance();
SFBBitmapSmp             bmp;
SFBBitmapSmp             dst;
SFBBitmapSmp             tmp;
AEEBitmapInfo            bmpInfo = {0};
SFXRectangle                  bmpRect;
SFBTransformSmp          trans;
SFXGrid                 point;
AEETransformMatrix       matrix  = {0};

// リソース ファイルからビットマップを取得します。
bmp = shell->LoadResBitmap(MYRESOURCE_RES_FILE, IDB_MY_PICTURE);

if (bmp != null) {
    // ビットマップのサイズを取得します。
    bmp->GetInfo(&bmpInfo);

    // 転送元ビットマップの長方形領域を設定します。
    bmpRect.Set(0, 0, (UInt16)bmpInfo.cx, (UInt16)bmpInfo.cy);

    // 作業用のビットマップを作成します。
    // (転送先のビットマップと互換性のあるビットマップを作成します。)
    dst = graphic->GetDestination();
    tmp = dst->CreateCompatibleBitmap(SFXSize((UInt16)bmpInfo.cx, (UInt16)bmpInfo.cy));

    // 作業用のビットマップに画像を描画します。
    tmp->BltIn(bmpRect, bmp, SFXGrid(0, 0));

    // SFBTransform のインスタンスを生成します。
    trans = SFBTransform::NewInstance(dst);

    // 変形マトリックスを設定します。
    // 1.5 倍に拡大します。
    matrix.A = 384;
    matrix.B = 0;
    matrix.C = 0;
    matrix.D = 384;

    // 転送元のビットマップを 1.5 倍に拡大して描画します。
    point.Set((UInt16)(bmpInfo.cx / 2), (UInt16)(bmpInfo.cy / 2));
    trans->TransformBltComplex(
                                point,    // 転送先の座標
                                tmp,      // 転送元のビットマップ
                                bmpRect,  // 転送元の長方形領域
                                matrix    // 1.5 倍に拡大します。
                              );
}

参照

BREW API ITRANSFORM_TransformBltComplex | BREW API ITransformのプロパティ | AEEMatrixTransform | SFBTransform


SFBTransform::TransformBltSimple
フラグの値を元にして指定されたビットマップを変形し、 転送先のビットマップに描画します。
[ public ]
SFCError TransformBltSimple(
    SInt32 xDest                          // 転送先の長方形の左上の X 座標
    SInt32 yDest                          // 転送先の長方形の左上の Y 座標
    SFBBitmapSmpConstRef bmpSrc           // 転送元のビットマップ
    SInt32 xSrc                           // 転送元の長方形の左上の X 座標
    SInt32 ySrc                           // 転送元の長方形の左上の Y 座標
    UInt32 dxSrc                          // 転送元の長方形の幅
    UInt32 dySrc                          // 転送元の長方形の高さ
    UInt16 transform                      // フラグ
    UInt08 composite = COMPOSITE_OPAQUE   // プロパティ
);
[ public ]
SFCError TransformBltSimple(
    SFXGridConstRef gridDest              // 転送先の長方形の左上の座標
    SFBBitmapSmpConstRef bmpSrc           // 転送元のビットマップ
    SFXRectangleConstRef rectSrc          // 転送元の長方形
    UInt16 transform                      // フラグ
    UInt08 composite = COMPOSITE_OPAQUE   // プロパティ
);

使用例

リソース ファイルから読み込んだビットマップを 2 倍に拡大して描画します。

// リソース ファイルから読み込むビットマップ画像のリソース ID
#define IDB_MY_PICTURE  0x0001

SFXGraphicsPtr          graphic = SFXGraphics::GetInstance();
SFBShellSmp             shell   = SFBShell::GetInstance();
SFBBitmapSmp            bmp;
SFBBitmapSmp            dst;
SFBBitmapSmp            tmp;
AEEBitmapInfo           bmpInfo = {0};
SFXRectangle                 bmpRect;
SFBTransformSmp         trans;

// リソース ファイルからビットマップを取得します。
bmp = shell->LoadResBitmap(MYRESOURCE_RES_FILE, IDB_MY_PICTURE);

if (bmp != null) {
    // ビットマップのサイズを取得します。
    bmp->GetInfo(&bmpInfo);

    // 転送元ビットマップの長方形領域を設定します。
    bmpRect.Set(0, 0, (UInt16)bmpInfo.cx, (UInt16)bmpInfo.cy);

    // 作業用のビットマップを作成します。
    // (転送先のビットマップと互換性のあるビットマップを作成します。)
    dst = graphic->GetDestination();
    tmp = dst->CreateCompatibleBitmap(SFXSize((UInt16)bmpInfo.cx, (UInt16)bmpInfo.cy));

    // 作業用のビットマップに画像を描画します。
    tmp->BltIn(bmpRect, bmp, SFXGrid(0, 0));

    // SFBTransform のインスタンスを生成します。
    trans = SFBTransform::NewInstance(dst);

    // 転送元のビットマップを 2 倍に拡大して描画します。
    point.Set((UInt16)(bmpInfo.cx / 2), (UInt16)(bmpInfo.cy / 2));
    trans->TransformBltSimple(
                               point,             // 転送先の座標
                               tmp,               // 転送元のビットマップ
                               bmpRect,           // 転送元の長方形領域
                               TRANSFORM_SCALE_2  // 2 倍に拡大します。
                              );
}

参照

BREW API ITRANSFORM_TransformBltSimple | BREW API ITransformのプロパティ | SFBTransform