![]() ![]() ![]()
|
BREW C++ ライブラリ & GUI フレームワーク : SophiaFramework 3.0 |
| JPEG イメージの取り扱い | |
| Tips | すべて |
JPEG のデータの読み込みは非同期で処理されるため、下記のようなコードは失敗する恐れがあります。
pi=ISHELL_LoadResImage(pMe->a.m_pIShell, “image.bar”, IMG_JPEG1); if(pi) IIMAGE_Draw(pi);
より安全に処理するには、下記の様に、IIMAGE_Notify によってコールバックを登録し、 イメージのロード完了時にコールバック内でIIMAGE_Draw をコールしてください。
ISHELL_CreateInstance(pMe->a.m_pIShell, AEECLSID_JPEG, (void **)&pi);
if (pi)
{
IIMAGE_Notify(pi, pcb); // pcb はコールバック関数へのポインタ
IIMAGE_SetStream(pi, stream); //stream は画像ファイルもしくは
//画像データへのポインタ
//→コールバック関数内でIIMAGE_Draw()
}
| PNG イメージの取り扱い | |
| Tips | すべて |
PNG イメージのデコードは画像データ + 40 KB ほどのヒープを瞬間的に使用します。 ヒープ残量を確認してからイメージをロードするようにして下さい。
| PNG イメージの透過処理について | |
| Tips | すべて |
2.1 から、PNG イメージに対しては AEE_RO_MASK を指定できなくなりました。 以前は、tRNS チャンクに透過色の情報を持たないような PNG データに対して AEE_RO_MASK を指定した場合、カラーパレットの index0 の色を透過表示していましたが、 2.1 以降ではこのような操作は行えません。 なお、tRNS チャンクに透過色の情報を持つ PNG データに対し、 AEE_RO_COPY を指定した場合、透過色の指定は無視されます。この動作は 2.1、2.0 で共通です。
| BCI イメージの取り扱いについて | |
| Tips | すべて |
BCI ファイルを IImage オブジェクトにセットした場合、 IImage オブジェクト自体を解放するまでソースの BCI ファイルを削除することは出来ません。
| パブリック関数 | |
|---|---|
| Void |
Draw(
SInt32 x
, SInt32 y
) Draw( SFXGridConstRef grid ) 画面上の指定された位置に画像を描画します。
|
| Void |
DrawFrame(
SInt32 frame
, SInt32 x
, SInt32 y
) DrawFrame( SInt32 frame , SFXGridConstRef grid )
画面上の指定された位置で、画像内の任意のフレームを描画します。
|
| Void |
DrawOffscreen(
SInt32 offscreen = 0
)
画像をオフスクリーンバッファとメインバッファのどちらに描画するかを指定します。
この関数は、IPARM_OFFSCREEN を指定して SFBImage::SetParm を呼び出した場合と同等の処理を行います。
|
| Void |
GetInfo(
AEEImageInfo* info
)
画像に関する情報を取得します。
|
| Bool |
HandleEvent(
AEEEvent event
, UInt16 wParam
, UInt32 dwParam
) HandleEvent( SFXEventConstRef event )
SFBImage オブジェクトのイベント ハンドラです。
|
| Void |
Notify(
PFNIMAGEINFO notify
, VoidPtr data = null
)
SFBImage::SetStream による画像データの読み込み完了時に呼び出されるコールバック関数を登録します。
|
| Void |
SetAnimationRate(
SInt32 rate
)
アニメーションレートをミリ秒単位で設定します。
この関数は、IPARM_RATE を指定して SFBImage::SetParm を呼び出した場合と同等の処理を行います。
|
| Void |
SetDisplay(
SFBDisplaySmpConstRef display
)
画像を描画するときに使用する SFBDisplay オブジェクトを設定します。
この関数は、IPARM_DISPLAY を指定して SFBImage::SetParm を呼び出した場合と同等の処理を行います。
|
| Void |
SetDrawSize(
SInt32 width
, SInt32 height
)
描画する画像のサイズを設定します。
この関数は、IPARM_SIZE を指定して SFBImage::SetParm を呼び出した場合と同等の処理を行います。
|
| Void |
SetFrameCount(
SInt32 count
)
画像内のフレームの数を設定します。
この関数は IPARM_NFRAMES を指定して SFBImage::SetParm を呼び出した場合と同等の処理を行います。
|
| Void |
SetFrameSize(
SInt32 width
)
アニメーションをサポートしない画像形式
(Windows BMPなど) 用に各フレームの幅を設定します。
この関数は、IPARM_CXFRAME を指定して SFBImage::SetParm を呼び出した場合と同様の処理を行います。
|
| Void |
SetOffset(
SInt32 cx
, SInt32 cy
) SetOffset( SFXGridConstRef grid )
描画用オフセットを設定し、描画時の画像の原点を変更します。
この関数は、IPARM_OFFSET を指定して SFBImage::SetParm を呼び出した場合と同等の処理を行います。
|
| Void |
SetParm(
SInt32 param
, SInt32 p1
, SInt32 p2
)
SFBIImage オブジェクトの画像関連パラメータを設定します。
|
| Void |
SetStream(
SFBAStreamSmpConstRef stream
)
画像データをファイル、またはソケットからストリーム形式で読み込みます。
画像の読み込みが完了したときに、SFBImage::Notify で登録されたコールバック関数を呼び出します。
|
| Void |
Start(
SInt32 x
, SInt32 y
) Start( SFXGridConstRef grid )
指定された画像をアニメーション化します。
この関数は、画像の個々のフレームを繰り返し描画します。
|
| Void |
Stop( Void )
SFBImage::Start を使用して開始した画像のアニメーションを停止します。
|
[ public ] Void Draw( SInt32 x // 画像を描画する長方形の左上の X 座標 SInt32 y // 画像を描画する長方形の左上の Y 座標 );
[ public ] Void Draw( SFXGridConstRef grid // 画像を描画する長方形の左上の座標 );
リソース ファイルから読み込んだ画像を描画します。
// リソース ファイルから読み込むビットマップのリソース ID
#define IDB_MY_PICTURE 0x0001
SFBShellSmp shell = SFBShell::GetInstance();
SFBImageSmp image;
AEEImageInfo imageInfo = {0};
// リソース ファイルから画像を取得します。
image = shell->LoadResImage(MYRESOURCE_RES_FILE, IDB_MY_PICTURE);
if (image != null) {
// 画像の情報を取得します。
image->GetInfo(&imageInfo);
// SFBImage オブジェクトが画像を持つかを確認します。
if (imageInfo.cx == 0) {
DBGPRINTF("Failed to load image…!");
image.Release();
}
else {
// 画像を描画します。
image->Draw(0, 0);
}
}
[ public ] Void DrawFrame( SInt32 frame // フレーム番号 SInt32 x // 画像を描画する長方形の左上の X 座標 SInt32 y // 画像を描画する長方形の左上の Y 座標 );
[ public ] Void DrawFrame( SInt32 frame // フレーム番号 SFXGridConstRef grid // 画像を描画する長方形の左上の座標 );
リソース ファイルから BREW 圧縮画像 (BCI) を読み込み、 任意のアニメーションのフレームを描画します。
// リソース ファイルから読み込む BCI イメージのリソース ID
#define IDR_MY_ANIMATION 0x0001
SFBShellSmp shell = SFBShell::GetInstance();
SFBImageSmp image;
AEEImageInfo imageInfo = {0};
// リソース ファイルから BCI イメージを取得します。
image = shell->LoadResImage(MYRESOURCE_RES_FILE, IDR_MY_ANIMATION);
if (image != null) {
// BCI イメージの情報を取得します。
image->GetInfo(&imageInfo);
// SFBImage オブジェクトが BCI イメージを持つかを確認します。
if (imageInfo.cx == 0) {
DBGPRINTF("Failed to load image…!");
image.Release();
}
else {
// 任意のアニメーションのフレームを描画します。
image->DrawFrame(1, 0, 0);
}
}
[ public ] Void GetInfo( AEEImageInfo* info // 画像情報を受け取る領域を指すポインタ );
画像の情報を取得します。
// リソース ファイルから読み込むビットマップのリソース ID
#define IDB_MY_PICTURE 0x0001
SFBShellSmp shell = SFBShell::GetInstance();
SFBImageSmp image;
AEEImageInfo imageInfo = {0};
// リソース ファイルから画像を取得します。
image = shell->LoadResImage(MYRESOURCE_RES_FILE, IDB_MY_PICTURE);
if (image != null) {
// 画像の情報を取得します。
image->GetInfo(&imageInfo);
}
[ public ] Bool HandleEvent( AEEEvent event // イベント UInt16 wParam // イベント固有の 16 ビット値 UInt32 dwParam // イベント固有の 32 ビット値 );
[ public ] Bool HandleEvent( SFXEventConstRef event );
[ public ] Void Notify( PFNIMAGEINFO notify // コールバック関数 VoidPtr data = null // ユーザーデータ );
[ public ] Void SetDisplay( SFBDisplaySmpConstRef display // SFBDisplay オブジェクト );
この関数は、BREW 2.1 でのみ使用可能です。
BREW API IIMAGE_SetDisplay
リソース ファイルから画像を読み込み、 描画サイズを設定して描画します。
// リソース ファイルから読み込むビットマップのリソース ID
#define IDB_MY_PICTURE 0x0001
SFBShellSmp shell = SFBShell::GetInstance();
SFBImageSmp image;
AEEImageInfo imageInfo = {0};
// リソース ファイルから画像を取得します。
image = shell->LoadResImage(MYRESOURCE_RES_FILE, IDB_MY_PICTURE);
if (image != null) {
// 画像の情報を取得します。
image->GetInfo(&imageInfo);
// SFBImage オブジェクトが画像を持つかを確認します。
if (imageInfo.cx == 0) {
DBGPRINTF("Failed to load image…!");
image.Release();
}
else {
// 描画する画像のサイズを設定します。
image->SetDrawSize(50, 50);
// 画像を描画します。
image->Draw(0, 0);
}
}
BREW API IIMAGE_SetFrameSize | SFBImage::SetParm
[ public ] Void SetOffset( SInt32 cx // オフセットの X 座標 SInt32 cy // オフセットの Y 座標 );
[ public ] Void SetOffset( SFXGridConstRef grid // オフセットの座標 );
リソース ファイルからイメージを読み込み、 透過モードを有効にして描画します。
// リソース ファイルから読み込むビットマップのリソース ID
#define IDB_MY_PICTURE 0x0001
SFBShellSmp shell = SFBShell::GetInstance();
SFBImageSmp image;
AEEImageInfo imageInfo = {0};
// リソース ファイルから画像を取得します。
image = shell->LoadResImage(MYRESOURCE_RES_FILE, IDB_MY_PICTURE);
if (image != null) {
// 画像の情報を取得します。
image->GetInfo(&imageInfo);
// SFBImage オブジェクトが画像を持つかを確認します。
if (imageInfo.cx == 0) {
DBGPRINTF("Failed to load image…!");
image.Release();
}
else {
// 画像を透過モードで扱います。
image->SetParm(IPARM_ROP, AEE_RO_TRANSPARENT, 0);
// 画像を描画します。
image->Draw(0, 0);
}
}
[ public ] Void SetStream( SFBAStreamSmpConstRef stream // 画像データストリーム );
[ public ] Void Start( SInt32 x // フレームを描画する長方形の左上の X 座標 SInt32 y // フレームを描画する長方形の左上の Y 座標 );
[ public ] Void Start( SFXGridConstRef grid // フレームを描画する長方形の左上の座標 );
[ public ] Void Stop(Void);
|
Copyright (C) 2002 - 2009 Sophia Cradle, Inc. All Rights Reserved. |
![]() ![]() ![]()
|