首页 | 源码下载 | 编程控件 | 书籍教程 | 应用方案 | 设计素材 | 项目交易 | 开发文档 | 商业源码 | 我的帐号
登陆我的帐号
帐 号:
密 码:
我还不是会员,需要注册!

截止2004年12月16日
本站源码总量(商业源码除外)RAR压缩为 4,206,733 KB。其中免费源码为 1,124,495 KB,会员源码为 3,082,238 KB
C/C++ 129,555 KB
Delphi 1,258,381 KB
Java 120,937 KB
.Net 36,886 KB
PowerBuilder 954,525 KB
Visual Basic 923,454 KB
ASP 259,795 KB
JSP 4,987 KB
其他 94,723 KB

本站是中国频道、中资源、时代互联顶级代理:注册国际域名70元,国内域名130元,各类ASP、PHP、JSP空间8折优惠!
本站承担各类网站制作开发及方案策划,项目经验丰富,欢迎洽谈!

网站动态
关于下载速度慢的问题解答
想免费下载源码吗?
还有众多资源恭候大家免费…
道歉!
关于资源更新的说明
关于下载错误的原因!
源码资源网新版网站投入运…

当前位置:源码资源网首页 > 开发文档首页 > C/C++ >关于常用的JPG,动态GIF,BMP等一些常用解决办法

关于常用的JPG,动态GIF,BMP等一些常用解决办法
人气:24 文字大小:     作者:

本文演示代码打包下载: http://blog.csdn.net/zhaochong12/admin/coolzi.myrice.com/PIC_test.rar


常用方式0,使用GIF89A类:


优势: 一招鲜吃遍天,上至动态GIF,下至静态JPG,BMP两句搞定,简单方便


缺点: 有时会出现边缘效果, 有的图像会挺明显


使用方法:
#include "gif89a.h"
CGif89a* gif;
在调用函数内添加:
gif=new CGif89a this->m_hWnd);
gif->Load "test.gif");
gif->SetPosition 100,100);
gif->Play );


//gif->Pause TRUE); //Pause TRUE)为暂停GIF的播放
//gif->Pause FALSE);//Pause FALSE)为继续GIF的播放


常用方式1,使用iPicture:


优势: MS早期的图片类, 可以显示所有的静态图片, 显示动态GIF尚需一个GIF的图象储存结构gifImage,如果有兴趣可以看看薛碧的如何在VC中显示动态的GIF


缺点: 用户自主定义不太方便, 薛碧文章是介绍在RC静态编辑显示动态GIF的办法,本来打算改写一下作个GIF类, 发现了GIF89A, 于是没作了多余工


调用方法:
CString sPath;


sPath=_T "1.JPG");
//CDC* pDC = GetDlgItem IDC_CONTROL)->GetDC );//获得控件DC
CRect zcRect;
GetClientRect &zcRect);
ShowJpgGif pDC,sPath,zcRect.left,zcRect.top,zcRect.Width ),zcRect.Height ));


函数实现


BOOL ShowJpgGif CDC* pDC,CString strPath, int x, int y ,int Width, int Height)


{


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;


//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, Width, Height,0,


hmHeight,hmWidth,-hmHeight,NULL)))
{


pPic->Release );


return false;


}


pPic->Release );


}


else


{


return false;


}


return true;


}


常用方式2, 使用MS CImage


优点: MS的最新图像类,MFC/ATL通用, 应该是可靠的,使用也很简单方便,较为灵活,目的应该为替代iPicture类


缺点: 还是不能完美的解决动态GIF问题, #include <atlimage.h>


CImage m_Image;


//pS: 以下插入调用函数
CString strFilter;
CSimpleArray<GUID> aguidFileTypes;
HRESULT hResult;
//CImage m_Image;


// 获取CImage支持的图像文件的过滤字符串
hResult = m_Image.GetExporterFilterString strFilter,aguidFileTypes,_T  "All Image Files"));
if  FAILED hResult))
{
MessageBox "GetExporterFilter调用失败!");
return;
}
CFileDialog dlg TRUE, NULL, NULL, OFN_FILEMUSTEXIST, strFilter);
if IDOK != dlg.DoModal ))
return;


m_Image.Destroy );
// 将外部图像文件装载到CImage对象中
hResult = m_Image.Load dlg.GetFileName ));
if  FAILED hResult))
{
MessageBox "调用图像文件失败!");
return;
}


// 设置主窗口标题栏内容
CString str;
str.LoadString AFX_IDS_APP_TITLE);
AfxGetMainWnd )->SetWindowText str + " - " +dlg.GetFileName ));


Invalidate ); // 强制调用OnDraw


//PS: 以下插入重画函数


void Ctemp7View::OnDraw CDC* pDC)
{
Ctemp7Doc* pDoc = GetDocument );
ASSERT_VALID pDoc);


// TODO: 在此处为本机数据添加绘制代码
if  !m_Image.IsNull ))
{
CRect zcRect;
GetClientRect &zcRect);
m_Image.Draw pDC->m_hDC,zcRect.left,zcRect.top,zcRect.Width ),zcRect.Height ));
}


}



 

文章出处:   发表时间:2004-11-20 11:58:57

1条数据记录,分1页显示 上一页 < [1] > 下一页
相关文章  
[源码下载] · comicq源代码
[书籍教程] · VC++ 6.0数据库系统开发实例导航
[书籍教程] · Delphi 7数据库编程学习捷径
[书籍教程] · Delphi百例精解
[书籍教程] · DELPHI综合开发文档

相关评论  
 当前没有评论!
请登陆后再来发表评论!
当前位置:源码资源网首页 > 开发文档首页 > 关于常用的JPG,动态GIF,BMP等一些常用解决办法
会员升级 | 广告服务 | 网站开发 | 联系我们 | 网站动态 | 客户反馈

CodeRes.com 保留所有权利 2004
本站所有资源仅供学习参考,版权归原作者所有,如侵犯了您的权益请与我们联系