2009-08-07 11 views
1

イメージングAPIを使用して、イメージングビルトインサイズ変更関数を使用して基本的にリスケーリング関数を記述しています。IImage * from IBitmapImage *

私はここに再スケール機能プロトだ、*それはイメージで構成されますことを、カスタムUBitmapクラスを養うためにリサイズ機能付きのポインタを必要とする:

int Rescale(const UBitmap* src, UBitmap* dst, UINT w, UINT h) 

My機能は、DSTポインタのヒープを割り当て(呼び出し側はありませんただそれを解放する必要があります)。

// Get the IImage ptr from the source 

HRESULT hr; 
CoInitializeEx(NULL, COINIT_MULTITHREADED); 

IImage* img_in = src->GetIImage(); 

if (img_in) 
{ 
    IImagingFactory* pImgf = NULL; 
    hr = CoCreateInstance(CLSID_ImagingFactory, 0, CLSCTX_ALL, 
      IID_IImagingFactory, void**)&pImgf); 

    assert(SUCCEEDED(hr)); 
     IBitmapImage* pIResBmp = NULL; 
     hr = pImgf->CreateBitmapFromImage(img_in,w,h, PixelFormatDontCare, 
       InterpolationHintBilinear, &pIResBmp); 
    assert(SUCCEEDED(hr)); 

    IImage* pImgOut = NULL; // How to obtain IImage pointer from pIResBmp? 

    bmpOut = new UBitmap(dst); 
    pImgf->Release(); 
} 

CoUninitialize(); 

だから私は正常pImg-> CreateBitmapFromImageコールで画像を再スケーリングしましたが、私はUBitmapを養うためにIImage *を取得する方法がわからない:私はこれまで何をやったか

コンストラクタ。

THanks in advance。

答えて