CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

关于vc中使用除bmp之外的图片

楼主dirboy_tym(笨小孩)2001-06-11 08:23:00 在 VC/MFC / 基础类 提问

各位大虾:  
  本人想编一个屏保,可是又不想使用bmp图片,请问可使用如jpg等类型的图片吗?如果可以,请问怎么实现?并能对其进行修改么?  
  谢谢! 问题点数:39、回复次数:14Top

1 楼tlovexyj(菠萝菠萝蜜)回复于 2001-06-11 09:17:00 得分 0

/**********************  
  picName   =   文件名  
  dc             =   目标设备句柄  
  w,   h         =   目标设备句柄的   长和宽  
  **********************/  
  BOOL   LoadPic(const   char   *picName,   CDC   &dc,   DWORD   w,   DWORD   h)  
  {  
  IPicture   *pPic;  
  IStream   *pStm;  
   
  CFileStatus   fstatus;  
  CFile   file;  
  LONG   cb;  
   
  if   (file.Open(picName,CFile::modeRead)&&  
  file.GetStatus(picName,   fstatus)&&  
  ((cb   =   fstatus.m_size)   !=   -1))  
  {  
  HGLOBAL   hGlobal   =   GlobalAlloc(GMEM_MOVEABLE,   cb);  
  LPVOID   pvData   =   NULL;  
  if   (hGlobal   !=   NULL)  
  {  
  if   ((pvData   =   GlobalLock(hGlobal))   !=   NULL)  
  {  
  file.ReadHuge(pvData,   cb);  
  GlobalUnlock(hGlobal);  
  CreateStreamOnHGlobal(hGlobal,   TRUE,   &pStm);  
   
  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);  
   
  DWORD   fX,   fY;  
   
  fX   =   (DWORD)((double)dc.GetDeviceCaps(HORZRES)*(double)hmWidth/  
    ((double)dc.GetDeviceCaps(HORZSIZE)*100.0)   *   1.512f);  
  fY   =   (DWORD)((double)dc.GetDeviceCaps(VERTRES)*(double)hmHeight/  
    ((double)dc.GetDeviceCaps(VERTSIZE)*100.0)   *   1.512f);  
   
  DWORD   top=0,   left=0;  
  if   (w!=0   &&   h!=0)  
  {  
  if   (fX   >=   w)  
  fX   =   w;  
  else  
  left   =   (w-fX)/2;  
  if   (fY   >=   h)  
  fY   =   h;  
  else  
  top   =   (h-fY)/2;  
  }  
  if(FAILED(pPic->Render(dc,left,top,fX,fY,0,hmHeight,hmWidth,-hmHeight,NULL)))  
  {  
  #ifdef   _DEBUG  
  TRACE("\nFailed   To   Render   The   picture!");  
  #endif  
  return   FALSE;  
  }  
  pPic->Release();    
  }    
  else  
  {  
  #ifdef   _DEBUG  
  TRACE("\nError   Loading   Picture   From   Stream!");  
  #endif  
  return   FALSE;    
  }  
  }  
  }  
  }  
  else  
  {  
  #ifdef   _DEBUG  
  TRACE("\nCan't   Open   Image   File!");  
  #endif  
  return   FALSE;  
  }  
   
  return   TRUE;  
  }  
   
   
  使用范例:  
  CRect   rect;  
  m_hPicView.GetWindowRect(&rect);  
  CDC   *pDC=m_hPicView.GetDC();  
  if   (LoadPic(fn,   *pDC,   m_Rect.Width(),   m_Rect.Height())==FALSE)  
  Top

2 楼tlovexyj(菠萝菠萝蜜)回复于 2001-06-11 09:20:00 得分 0

可以   读gif   jpg   bmp  
  Top

3 楼dirboy_tym(笨小孩)回复于 2001-06-11 18:42:00 得分 0

谢谢!Top

4 楼dirboy_tym(笨小孩)回复于 2001-06-11 18:50:00 得分 0

okTop

5 楼dirboy_tym(笨小孩)回复于 2001-06-13 12:53:00 得分 0

对了,可以对它进行修改么,不用其他软件,比如直接调用函数textout之类的写几个字么。Top

6 楼tlovexyj(菠萝菠萝蜜)回复于 2001-06-13 16:42:00 得分 0

可以的,这个是往DC上画的。  
  你想能够在DC上操作的都可以。  
   
  Top

7 楼tlovexyj(菠萝菠萝蜜)回复于 2001-06-13 16:49:00 得分 0

555  
  我的分  
  5555555  
   
  Top

8 楼leky2000(懒客)回复于 2001-06-13 17:15:00 得分 19

我也最害怕给别人回答问题,别人不给分Top

9 楼tlovexyj(菠萝菠萝蜜)回复于 2001-06-13 18:51:00 得分 20

:~~~~~~~~~~~~~~~~~*Top

10 楼dirboy_tym(笨小孩)回复于 2001-06-14 12:54:00 得分 0

ok!ok!i   rember   !Top

11 楼dirboy_tym(笨小孩)回复于 2001-06-14 12:57:00 得分 0

thanksTop

12 楼tlovexyj(菠萝菠萝蜜)回复于 2001-06-14 13:04:00 得分 0

o   faint~       :~~~~~~~~~~~~~~~~~~~~(~~~~~~~~~~Top

13 楼leky2000(懒客)回复于 2001-06-14 13:21:00 得分 0

to   tlovexyj(炎龙) 对不起,我本想安慰你,却抢了你的分   哎!!!!!!!!!!Top

14 楼tlovexyj(菠萝菠萝蜜)回复于 2001-06-14 13:27:00 得分 0

555555555555  
  我好可怜牙…  
  leky2000(懒客),你还我分来-------------------------------------------  
   
  不过,再安慰安慰我就算了!!!!!Top

相关问题

  • 如何使用含有多幅图片的bmp或ico
  • 怎样在CBitmapButton中使用外部的BMP图片????
  • 怎样使用Picture Control显示BMP图片
  • 请问在VC++中怎样把JPG图片转换为BMP图片?
  • 梦想: 利用vc连续显示20副图片(bmp)
  • 100分-如何在VC中打开一副BMP图片??
  • 请问怎样在使用CBitmapButton的时候加载图片文件(bmp)
  • bmp图片问题。
  • vc里面如何把粘贴板里面的图片内容另存为一幅bmp图片!
  • 如何解决在VC中导入.bmp图片时的一个问题?谢谢!

关键词

  • dc
  • null
  • hglobal
  • fstatus
  • picname
  • ppic
  • hmwidth
  • pvdata
  • pstm
  • 图片

得分解答快速导航

  • 帖主:dirboy_tym
  • leky2000
  • tlovexyj

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo