vc++显示一张JPG图片

bool CshowjpgDlg::ShowJpgGif(CDC* pDC,CString strPath, int x, int y)
{
    IStream *pStm;
    CFileStatus fstatus;
    CFile file;
    LONG cb;

    if (file.Open(strPath,CFile::modeRead)&&file.GetStatus(strPath,fstatus)&&((cb = fstatus.m_size) != -1))
    {
        HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, cb);
        LPVOID pvData = NULL; 

        if (hGlobal != NULL)
        {
            pvData = GlobalLock(hGlobal);
            if (pvData != NULL)
            {
                file.Read(pvData, cb);
                GlobalUnlock(hGlobal);
                CreateStreamOnHGlobal(hGlobal, TRUE, &pStm);
            }
        }
    }
    else
    {
        return false;
    }

    //显示JPEG和GIF格式的图片,GIF只能显示一帧,还不能显示动画,
    //要显示动画GIF请使用ACTIVE控//件。
    IPicture *pPic = nullptr;

    //load image from file stream
    if(SUCCEEDED(OleLoadPicture(pStm,fstatus.m_size,TRUE,IID_IPicture,(LPVOID*)&pPic)))
    {
        OLE_XSIZE_HIMETRIC hmWidth;
        OLE_YSIZE_HIMETRIC hmHeight; 

        pPic->get_Width(&hmWidth);
        pPic->get_Height(&hmHeight);
        double fX,fY;

        //get image height and width
        fX = (double)pDC->GetDeviceCaps(HORZRES)*(double)hmWidth/((double)pDC->GetDeviceCaps(HORZSIZE)*100.0);
        fY = (double)pDC->GetDeviceCaps(VERTRES)*(double)hmHeight/((double)pDC->GetDeviceCaps(VERTSIZE)*100.0); 

        //use render function display image
        if(FAILED(pPic->Render(*pDC,x,y,(DWORD)fX,(DWORD)fY,0,hmHeight,hmWidth,-hmHeight,NULL)))
        {
            pPic->Release();
            return false;
        }
        pPic->Release();
    }
    else
        return false;
    return true;
}

2.调用
 CDC* pDC = GetDlgItem(IDC_PICTRUE11)->GetDC();
 ShowJpgGif(pDC,_T("d.jpg"),0,0);

时间: 2024-11-09 05:13:12

vc++显示一张JPG图片的相关文章

如何启动app时全屏显示Default.png(图片)?

大部分app在启动过程中全屏显示一张背景图片,比如新浪微博会显示这张: 要想在iOS中实现这种效果,毫无压力,非常地简单,把需要全屏显示的图片命名为Default.png即可,在iOS app启动时默认会去加载并全屏显示Default.png. 也可以用其他名称来命名图片,在Info.plist配置一下即可: 配置过后,app启动时就会去加载并全屏显示lufy.png 在默认情况下,app显示Default.png时并非真正的"全屏显示",因为顶部的状态栏并没有被隐藏,比如下面的效果:

vc++加载透明png图片方法——GDI+和CImage两种

vc++加载透明png图片方法——GDI+和CImage两种 在加载png时遇到了麻烦,后来用了两个方法解决了.一个是用GDI+,另外就是用vs.net MFC自带的CImage. 先看看GDI+的方法 方法1: 1.GDI+画透明图层(alpha)的png图片 stdafx加入如下: #include <comdef.h>//初始化一下com口 #include "GdiPlus.h" using namespace Gdiplus; #pragma comment(li

图片轮播_支持显示网络图片及下载图片至SD后再显示

现在的移动应用, 很常见的一个交互效果就是在首页顶部添加图片轮播的控件, 焦点图可以放入广告, 也可以放入文章的内容图片, 它们不断自动切换, 点击焦点图即跳至对应的界面. 交互效果很棒. 做图片轮播的效果, 方法并不少. 本文使用了常见的viewpager 去实现. 支持显示网络图片下载在缓存显示, 如果有SD卡则默认将图片下载至SD卡中再显示本地的图片. 其实网上这类代码已经很多,  应该也有很多写得比我好. 今天有点时间, 就做了个来练手, 顺便写下自己第一篇原创文章. 敲代码之前也参考了

destoon教程之详情页显示5张缩略图

destoon默认详情页主图下面只有3张缩略小图,如图:由于需求,我们需要将3张图增加至5张.然而就是这样一个看似很简单的问题,在初期我们整整折腾了3天才解决!下面来将实现此功能的详细步骤记录下来,以便日后备用.注意:此教程制作时是destoon v5.0版本,由于不同版本写法略有改变,可能文章中提及的行号与看官看到的并不对称,请仔细看图,根据图片中上下段代码进行修改. 详情页展示的图片都是从后台调取出来的,如果想要在详情页展示5张图片,我们必须要在数据库中添加字段及修改后台源码.艺灵会告诉你:

jsp页面中显示二维码图片

最近做的一个项目需要在前台页面显示二维码:因为以前做过二维码生成方面的东西,就沿用以前的方式:导入qrcode.jar包,然后后台生成图片保存,前台获取图片的路径,并显示.大家可以看得出来这个过程是比较耗时的,一个人测试半小时,会有好几百张二维码图片,那么后台生成的临时二维码图片什么时候删除呢?第一种选择是我前台显示后立即删除,因为系统需求的原因,这样交互会很频繁,影响效率:第二种选择是job定时去删除.两种方式虽然都能解决问题但都有点勉强. 能不能在前台把数据封装成二维码呢?YES,回答如此的

Wampserver或者帝国CMS安装后, 打开localhost显示IIS欢迎界面图片

我们在安装集成环境Wampserver或者帝国CMS之后,有时会遇到一个问题, 打开localhost显示一张IIS欢迎界面图片,这个问题该如何解决呢,我在这里简单整理了一下解决方法 电脑win10系统,左下角点  开始>运行   输入cmd,进入如下图界面   然后输入以下命令:net stop iisadminnet stop w3svc   回到桌面,鼠标放到"计算机",左击,点"管理">"服务"   在服务里边找到以下项:Wo

读取多张MNIST图片与利用BaseEstimator基类创建分类器

读取多张MNIST图片 在读取多张MNIST图片之前,我们先来看下读取单张图片如何实现 每张数字图片大小都为28 * 28的,需要将数据reshape成28 * 28的,采用最近邻插值,如下 def plot_digit(data): img = data.reshape(28,28) plt.imshow(img,cmap=matplotlib.cm.binary,interpolation='nearest') plt.axis('off') import matplotlib.pyplot

IIS发布,无法显示CSS样式和图片

在BS的项目中,完成之后,都需要发布自己的网站.这个时候就要安装IIS了. 我也是最近才打算使用IIS来进行发布的.刚把IIS安装上,就遇到了问题. 出现问题就想办法解决问题呗.遇到的问题和视频里面的类似,他也讲了一下是如何解决的.不过,他的只是不显示图片.而我的是 图片和CSS样式都显示.错误的原因:路径与发布不一致. 检查了一下自己的代码,路径写错?这也不至于全写错吧. 打开自己发布前的vs程序,执行一下:没问题.如果是路径错了,在vs程序中检查,也应该不显示才对? 既然程序没问题,发布也没

Android App 启动时显示正在加载图片(源码)

微信.QQ.天天动听等程序,在打开时显示了一张图片,然后跳转到相关界面.本文实现这个功能,其实很简单.... 新建两个Activity,LoadingActivity,MainActivity,将LoadingActivity设置为android.intent.action.MAIN.使用TimerTesk,或者Thread将LoadingActivity显示几秒后跳转到MainActivity界面. LoadingActivity: new Timer().schedule(new Timer