旋转IImage类型的图像*[Windows Mobile]

Ash*_*thy 2 com windows-mobile windows-ce visual-c++

关于如何在这张图片上完成90度旋转的任何想法?以下是我的代码片段.

 HWND hwnd = GetActiveWindow();
HMODULE hmod = GetModuleHandle(NULL);
HRSRC hResInfo = FindResource(hmod,MAKEINTRESOURCE(IDR_JPEG2),_T("JPEG"));

DWORD imagesize = SizeofResource(hmod,hResInfo);
HGLOBAL hResData = LoadResource(hmod,hResInfo);
if(hResData == NULL)
    return -1;
LPVOID resptr = LockResource(hResData);

IImagingFactory *imgF = NULL;
IImage *iimg = NULL;
HDC hdc = pDC->GetSafeHdc();
int iWidth = GetSystemMetrics(SM_CXSCREEN);
int iHeight =  GetSystemMetrics(SM_CYSCREEN);

::CoInitializeEx(NULL, ::COINIT_MULTITHREADED);//Initializing the COM object. It is required before
if (CoCreateInstance(CLSID_ImagingFactory,NULL,CLSCTX_INPROC_SERVER,IID_IImagingFactory,(void **)&imgF) == S_OK)
{
    HRESULT hresult = imgF->CreateImageFromBuffer(resptr,imagesize,BufferDisposalFlagNone,&iimg);
    RECT rect;
    rect.bottom = iHeight;
    rect.left   = 0;
    rect.right  = iWidth;
    rect.top    = 0;

    if(iWidth > iHeight)    
    {
        //Rotation should take place here
    }
    iimg->Draw(hdc,&rect,NULL);
}
Run Code Online (Sandbox Code Playgroud)

此函数的参数是类型CDC* pDC.

Igo*_*ous 6

这很容易做到:

  1. 必须在'iimg'上为IBasicBitmapOps调用'QueryInterface'
  2. 鉴于其结果,使用Rotate方法来实现您的目标

我希望这能帮到您