//请看以下代码,可以运行,但是不知道那两个CRect的比例是多少,我通过LoadImges(L"1.jpg",CRect(0,0,100,100),CRect(0,0,100,100));这样调用时的图像好像是经过放大的,就是说第一个CRect大于第二个Crect.我知道可以直接把函数里面的第二个CRect调用为NULL就可以显示整张图片,我现在调用了NULL的方式显示了一个背景图片,然后又在CRect(50,60,100,100)的区域显示了一张其它的小图片,现在只想把这部分的区域擦拭掉,所以就想把背景图片的这部分区域再加载一次,想不到比例不一样的,不知道谁知道能说一下这比例是多少.后来把这函数放在OnPaint(); 通过InvalidateRect重画部分区域,会全部重画现重画那部分区域,要不是不放在OnPaint()那,就重画时会清空那部分区域,看到窗口的背景色了.说了一大堆了,不知道有没有高手帮忙一下,主要是帮搞好参数中的那两个CRect的关系.LoadImges(L"1.jpg",CRect(50,60,100,100),CRect(50,60,100,100));哪位高手帮帮忙.//添加头文件
#include "initguid.h"
#include "Imaging.h" //添加函数void CMy00Dlg::LoadImges(LPCTSTR path,CRect d_rect,CRect s_rect)
{ HRESULT hr ; //返回结果
IImagingFactory * pImagingFactory =NULL; //Image工厂接口对象
IImage * pImage = NULL; //Image接口对象
LPCTSTR szFileName = path; //图象文件

//初始化COM环境

    if (FAILED(hr = CoInitializeEx(NULL, COINIT_MULTITHREADED)))
    {
        TRACE(L"COINIT_MULTITHREADED ERROR");
return;
    }

//得到Image工厂接口对象
CoCreateInstance (CLSID_ImagingFactory,
NULL,
CLSCTX_INPROC_SERVER,
IID_IImagingFactory,
(void **)&pImagingFactory);


if (FAILED(hr))
{
TRACE(L"IMAGE FACTORY CREATED ERROR");
goto finish;
}

//加载图象文件到IImage接口对象中
hr = pImagingFactory->CreateImageFromFile(szFileName,&pImage);

//
if (FAILED(hr))
{
TRACE(L"IMAGE LOAD ERROR");
goto finish;

{
//开始绘制图象
//得到设备环境
CDC *pDC = GetDC();

//定义绘制尺寸
//绘制图片
pImage->Draw(pDC->m_hDC, &rect1, &rect2);

//释放设备环境
ReleaseDC(pDC);
}
finish:
//释放IImage接口对象
    if (pImage)
        pImage->Release();

//释放IImagingFactory接口对象
    if (pImagingFactory)
        pImagingFactory->Release();

//释放程序占用的COM资源
    CoUninitialize();

}