怎么通过ITRANSFORM_TransformBltComplex实现一个IImage图片的局部缩放
IImage *pImage = NULL;
AEEImageInfo imageinfo;
ITransform *po = NULL;
AEETransformMatrix tm;
IBitmap *pIBitmap = NULL;
IBitmap *pIBitmapSrc = NULL;
pImage = ISHELL_LoadResImage(pMe->a.m_pIShell, "game.bar", IDI_FRAMEA);
IImage_GetInfo(pImage, &imageinfo);
//建立一个跟屏幕兼容的并且跟图片等打ibitmap接口pIBitmap
IBITMAP_CreateCompatibleBitmap(IDisplay_GetDestination(pMe->a.m_pIDisplay), &pIBitmap, imageinfo.cx, imageinof.cy);
IDisplay_SetDestination(pMe->a.m_pIDisplay, pIBitmap);
//把图片画到pIBitmap上
IImage_Draw(pImage, 0, 0);
//恢复显示目标bitmap
IDisplay_SetDestination(pMe->a.m_pIDisplay, NULL);
//创建一个跟pIBitmap兼容的并且大小为40X40的pIBitmapSrc
IBITMAP_CreateCompatibleBitmap(pIBitmap, &pIBitmapSrc, 40, 40);
//获取pIBitmapSrc的Transform接口
IBITMAP_QueryInterface(pIBitmapSrc, AEECLSID_TRANSFORM,(void**)&po);
tm.A = tm.B = tm.C = tm.D =0;// 256;
tm.A = 256*2;//放大2倍
tm.D = 256*2;
//从pIBitmap的10,10开始,区域大小为20,20通过放大画到pIBitmapSrc中
ITRANSFORM_TransformBltComplex(po, 0, 0, pIBitmap, 10, 10, 20, 20, &tm, COMPOSITE_OPAQUE);
//把pIBitmapSrc画到屏幕上
IBitmap_BltIn( IDisplay_GetDestination(pMe->a.m_pIDisplay), 100, 100, 40, 40, pIBitmapSrc, 0, 0, AEE_RO_COPY);
IDisplay_Update(pMe->a.m_pIDisplay);
这段代码中我打算实现从把pImage的图片中从(10, 10)开始,到宽高20,20的矩形区域放大到40,40大小的图片,
实际图片的大小48,32的宽高
这里我没有做一下接口生成的判断(略去,主要看逻辑),但现实出来的效果是发生了放大,在屏幕显示的是40,40,但是这个40X40的区域中只有从0,0到20,20是图片,没有占满40X40的区域,其他是黑色,
请教各位,ITRANSFORM_TransformBltComplex在这里使用的错吗?是什么原因?
注:我当前使用的版本是brew3.15