打开位图文件的方法

在View类的事件里面选中ID_FILE_OPEN,编写COMMAND函数,在这个消息响应函数中编写如下代码:

CString  strfilepath; //获取文件的路径

  m_bOpen=true; //判断是不是打开文件

void CLoadImageView::OnFileOpen()
{
  m_bOpen=true;
    CFileDialog pCFileDialog(true, NULL, NULL, 0, "位图文件(*.bmp)|*.bmp");
 pCFileDialog.m_ofn.lpstrTitle = "打开文件";

 if(pCFileDialog.DoModal() != IDOK)
 {
 return;
 }
    strfilepath=pCFileDialog.GetPathName();//获取文件路径与名称
 AfxMessageBox(strfilepath);
 Invalidate(1);
}
在OnDraw()函数中添加代码:

if( m_bOpen)
 {
  CBitmap bitmap;

   //保存位图信息; 
   BITMAP bmp;  

   //建立兼容设备
   CDC dcCompatible;        
   dcCompatible.CreateCompatibleDC(pDC); 
   HBITMAP hBitmap;
   hBitmap=(HBITMAP)LoadImage(AfxGetInstanceHandle(),
   strfilepath, //实际位图文件的路径
   IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);//从文件中装入位图
   bitmap.Detach();     //分离,我认为是跟上一个位图脱离关系,为了接收下一个位图
    bitmap.Attach(hBitmap); //关联
    bitmap.GetBitmap(&bmp);
    dcCompatible.SelectObject(&bitmap); 
    //绘制非透明位图(将dcCompatible上的内容拷贝到pDC中)
 pDC->BitBlt(100,100,bmp.bmWidth,bmp.bmHeight,&dcCompatible,0,0,SRCCOPY);
 }

即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值