//请看以下代码,可以运行,但是不知道那两个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();
}
#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();
}
An optional pointer to a RECT that specifies, in 0.01mm units, the portion of the image to be drawn in dstRect.
http://hi.baidu.com/csuhkx/blog/item/fda1b316892b6b55f2de32f4.html