2350|0

63

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

IImage接口打开宽或高是1个象素的图片后再打开其他图片不正常 [复制链接]

IImage接口打开宽或高是1个象素的图片后,再打开其他图片,用IImage相关的接口描画出来是之前打开的图片,有时还支离破碎的。

实机上的问题,模拟器上正常,是IImage的调用有问题还是OSImage做的有问题?
哪位达人遇到过请不吝赐教。

BOOL CImageStatic::ShowJPEG(HDC hdc,const TCHAR * filename,int nStartX,int nStartY,int nChangeX,int nChangeY)
{
        IImagingFactory *pImgFactory = NULL;
        IImage *pImage = NULL;
        ImageInfo imageInfo;
        RECT dstRc;
        BOOL bRet = FALSE;
        HRESULT        hr = S_OK;
        CString        str;

        if (FAILED(hr = CoInitializeEx(NULL, COINIT_MULTITHREADED))) {
                str.Format(TEXT("CoInitializeEx failed!\n%s"), ErrStr(hr));
                MessageBox(str);
                goto ShowJPEG_End;
        }

        if (SUCCEEDED(hr = CoCreateInstance(CLSID_ImagingFactory,
                                                                        NULL,
                                                                        CLSCTX_INPROC_SERVER,
                                                                        IID_IImagingFactory,
                                                                        (void **) &pImgFactory)))
        {
                if (SUCCEEDED(hr = pImgFactory->CreateImageFromFile(filename, &pImage)))
                {
                        if (FAILED(hr = pImage->GetImageInfo(&imageInfo))) {
                                str.Format(TEXT("GetImageInfo failed!\n%s"), ErrStr(hr));
                                MessageBox(str);
                                goto ShowJPEG_End;
                        }
                        dstRc.left = nStartX;
                        dstRc.top = nStartY;

                        dstRc.right = nStartX + nChangeX;
                        dstRc.bottom = nStartY + nChangeY;
                        if (FAILED(hr = pImage->Draw(hdc, &dstRc, NULL))) {
                                str.Format(TEXT("Draw failed!\n%s"), ErrStr(hr));
                                MessageBox(str);
                                goto ShowJPEG_End;
                        }
                        bRet = TRUE;
                }
                else {
                        str.Format(TEXT("CreateImageFromFile failed!\n%s"), ErrStr(hr));
                        MessageBox(str);
                }
        }
        else {
                str.Format(TEXT("CoCreateInstance failed!\n%s"), ErrStr(hr));
                MessageBox(str);
        }
ShowJPEG_End:
        if (pImage) {
                pImage->Release();
        }
        if (pImgFactory) {
                pImgFactory->Release();
        }
        CoUninitialize();
        return bRet;
}
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表