青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 298  文章 - 377  trackbacks - 0
<2016年4月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

常用鏈接

留言簿(34)

隨筆分類

隨筆檔案

文章檔案

相冊

收藏夾

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

下面要實現(xiàn)的程序是:從磁盤上讀取一個jpg,bmp,或者gif圖像,然后在程序中用鼠標(biāo)畫出一個矩形,表示圖像的顯示范圍
//打開文件對話框,記下路徑名

void CMyView::OnFile() 
{
 // TODO: Add your command handler code here
 CFileDialog dlg(TRUE);
 dlg.m_ofn.lpstrFilter="All Files(*.*)\0*.*\0textfiles(*.txt)\0*.txt\0\0";
 if(dlg.DoModal()==IDOK)
 {

  bmpname=dlg.GetPathName();
  Isput=TRUE;

 }
}

//左鍵單擊處理

void CMyView::OnLButtonDown(UINT nFlags, CPoint point) 
{
 // TODO: Add your message handler code here and/or call default
   CClientDC dc(this);
   if(Isput==TRUE){
     if(pushnumb==0)
    {
      oldpoint=point;
      oripoint=point;
      pushnumb=1;
      SetCapture();
   }
  else
  {
  
       ReleaseCapture();
       float x1=min(oripoint.x,point.x);
       float y1=min(oripoint.y,point.y);
       float  x2=max(oripoint.x,point.x);
       float y2=max(oripoint.y,point.y);

//繪制圖像
       this->DrawJpg(&dc,x1,y1,x2-x1,y2-y1);
      //this->DrawBmp1(&dc,x1,y1,
             // x2-x1,y2-y1,bmpname,1);
      pushnumb=0;
   }
 }
  CView::OnLButtonDown(nFlags, point);
}

//鼠標(biāo)移動消息處理

void CMyView::OnMouseMove(UINT nFlags, CPoint point) 
{
 // TODO: Add your message handler code here and/or call default
 if(Isput==TRUE&&pushnumb==1)
 {
  CClientDC dc(this);
  dc.SelectStockObject(NULL_BRUSH);

//繪制橡皮線矩形
  dc.SetROP2(R2_NOT);
  dc.Rectangle(oripoint.x,oripoint.y,oldpoint.x,oldpoint.y);
  dc.Rectangle(oripoint.x,oripoint.y,point.x,point.y);
  oldpoint=point;
 }
 CView::OnMouseMove(nFlags, point);
}

//繪制圖像的過程

 

void CMyView::DrawJpg(CDC *pDC,int x,int y,int width,int high)
{
 IPicture *pDic;
 IStream *pStm;
 CFileStatus fstatus;
 CFile file;
 LONG cb;

 BOOL bSuccess = TRUE;
 // 打開文件并獲得文件的真實大小
 if(file.Open(bmpname,CFile::modeRead) && file.GetStatus(bmpname,fstatus)
  && ((cb=fstatus.m_size)!=-1))
 {
  // 從堆中分配指定數(shù)量字節(jié)的一整塊,這時系統(tǒng)無法提供零零碎碎的局部或全局的堆
  HGLOBAL hglobal=::GlobalAlloc(GMEM_MOVEABLE,cb);
  LPVOID pvData=NULL;
  if(hglobal != NULL)
  {
   // 鎖定全局內(nèi)存對象并返回它的首地址
   if((pvData=::GlobalLock(hglobal))!=NULL)
   {
    // 把文件內(nèi)容讀進(jìn)全局內(nèi)存對象的地址空間中    
    file.ReadHuge(pvData,cb);

    // GlobalUnlock函數(shù)把以GMEM_MOVEABLE方式分配的內(nèi)存對象的鎖定計數(shù)器減1
    ::GlobalUnlock(hglobal);

    // 從全局內(nèi)存中創(chuàng)建stream對象,第二個參數(shù)指定當(dāng)stream釋放時是否自動釋放全局內(nèi)存
    ::CreateStreamOnHGlobal(hglobal,TRUE,&pStm);

    //  創(chuàng)建一個新的picture對象并用stream對象中的內(nèi)容初始化
    if(SUCCEEDED(::OleLoadPicture(pStm,fstatus.m_size,
     TRUE,IID_IPicture,(LPVOID*)&pDic)))
    {
     // 釋放不要的stream對象并清空stream指針(千萬不能省略,否則有內(nèi)存沒釋放掉)
     pStm->Release();
     pStm = NULL;
     
     OLE_XSIZE_HIMETRIC hmWidth;
     OLE_YSIZE_HIMETRIC hmHeight;
     pDic->get_Width(&hmWidth);
     pDic->get_Height(&hmHeight);

     int nImageWidth = MulDiv(hmWidth, ::GetDeviceCaps(pDC->m_hDC, LOGPIXELSX), 2540);
     int nImageHeight = MulDiv(hmHeight,::GetDeviceCaps(pDC->m_hDC, LOGPIXELSY), 2540);


     // 注意倒數(shù)幾個參數(shù)的選擇,可能出現(xiàn)翻轉(zhuǎn)
     if(FAILED(pDic->Render(pDC->m_hDC,x,y,nImageWidth ,nImageHeight ,0,hmHeight,
      hmWidth,-hmHeight,NULL)))

      AfxMessageBox("Failed!");
     pDic->Release();
    }
    else
     AfxMessageBox("Error Loading Picture from stream");
   }
  }

 }
 else
  AfxMessageBox("cann't open image file!");
}

更新:

如果要獲得象素大小,而不是上面的OLE_YSIZE_HIMETRIC ,可以用下面的方法轉(zhuǎn)換:

      int width = MulDiv(hmWidth, ::GetDeviceCaps(pDC->m_hDC, LOGPIXELSX), 2540);
      int hight = MulDiv(hmHeight,::GetDeviceCaps(pDC->m_hDC, LOGPIXELSY), 2540);

 

當(dāng)然如果只是導(dǎo)入bmp格式的不用那么麻煩,編寫下面這個函數(shù)就可以了

void CMyView::DrawBmp1(CDC *pDC, int x, int y, int width, int high, CString fName, int DrawMode)
{
 CDC dc;
 dc.CreateCompatibleDC(pDC);

//從外部文件導(dǎo)入
 HBITMAP b=(HBITMAP)::LoadImage(NULL,fName,IMAGE_BITMAP,0,0,LR_DEFAULTSIZE|LR_LOADFROMFILE);
 CBitmap bitmap;
 bitmap.Attach(b);
 BITMAP bm;
 bitmap.GetBitmap(&bm);
 dc.SelectObject(&bitmap);

//顯示圖像
 pDC->StretchBlt(x,y,width,high,&dc,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
 bitmap.Detach();

}

其他理論文章導(dǎo)讀:

http://www.diybl.com/course/3_program/vc/vc_js/2008831/138954.html

posted on 2013-04-07 20:07 聶文龍 閱讀(768) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            免费久久精品视频| 久久久青草婷婷精品综合日韩| 亚洲精品久久久久久久久久久久久 | 亚洲精选视频在线| 篠田优中文在线播放第一区| 国内精品久久久久国产盗摄免费观看完整版| 亚洲一区二区视频在线| 久久久成人精品| 一区二区av在线| 国产精品久久久久久久久婷婷| 一本一本久久a久久精品综合麻豆| 久久精品国产v日韩v亚洲| 亚洲卡通欧美制服中文| 国产日韩欧美在线看| 欧美日本在线看| 久久久久欧美| 亚洲精品在线视频| 国产农村妇女毛片精品久久麻豆| 久久久久亚洲综合| 亚洲综合欧美| 99re热精品| 99一区二区| 亚洲图中文字幕| 日韩视频在线永久播放| 亚洲精品一区二区三区不| 亚洲片国产一区一级在线观看| 久久激情五月丁香伊人| 亚洲在线播放电影| 亚洲欧美激情视频在线观看一区二区三区 | 久久久欧美一区二区| 久久久精品日韩| 欧美成人tv| 亚洲精品免费在线观看| 9色精品在线| 亚洲网址在线| 久久久蜜桃精品| 欧美日韩国产一级片| 欧美精品在线免费播放| 国产三级精品在线不卡| 国产自产v一区二区三区c| 91久久精品一区| 亚洲欧美日韩成人| 久久综合狠狠综合久久激情| 麻豆精品国产91久久久久久| 亚洲美女在线看| 久久免费国产精品| 国产精品美女一区二区| 久久福利毛片| 欧美激情在线有限公司| 老司机一区二区| 亚洲综合国产| 欧美日韩亚洲成人| 亚洲精品在线免费| 久久久久久久波多野高潮日日| 亚洲精选在线| 欧美日产国产成人免费图片| 在线观看一区二区视频| 欧美亚洲综合久久| 在线性视频日韩欧美| 欧美噜噜久久久xxx| 在线看一区二区| 欧美在线免费视屏| 亚洲盗摄视频| 麻豆精品视频| 国产精品久久午夜夜伦鲁鲁| 亚洲电影免费观看高清完整版| 久久精品国产99国产精品澳门| 欧美在线视频一区| 激情综合亚洲| 欧美资源在线观看| 亚洲免费在线观看| 国产欧美大片| 久久中文精品| 欧美成人中文字幕| 日韩小视频在线观看| 亚洲国产欧美在线| 欧美日韩视频第一区| 久久免费午夜影院| 欧美日韩中文| 久久国产精品久久久久久久久久 | 久久综合九九| 亚洲黄色一区| 一区二区激情| 国语精品中文字幕| 一本大道久久a久久综合婷婷| 国产一区二区三区无遮挡| 欧美刺激性大交免费视频| 欧美日韩在线精品一区二区三区| 欧美一区成人| 欧美一区二区三区免费视| 欧美激情视频一区二区三区不卡| 亚洲欧美国产日韩天堂区| 久久综合色天天久久综合图片| 性高湖久久久久久久久| 欧美激情一区二区| 免费不卡亚洲欧美| 国产人妖伪娘一区91| 亚洲网在线观看| 一区二区三区鲁丝不卡| 欧美激情在线观看| 亚洲精品久久视频| 中国成人黄色视屏| 欧美日韩国产不卡在线看| 欧美激情久久久久| 亚洲精品在线二区| 欧美经典一区二区三区| 亚洲日本成人网| 亚洲欧美日韩国产综合| 国产精品久久久99| 亚洲欧美在线免费| 久久精品日韩欧美| 国产综合久久久久久| 麻豆成人精品| 亚洲免费激情| 久久夜色精品国产欧美乱极品| 久久资源av| 中文一区二区在线观看| 久久久精品国产免大香伊| 国产自产在线视频一区| 每日更新成人在线视频| 中国成人亚色综合网站| 欧美中文字幕在线播放| 亚洲人成高清| 黑人巨大精品欧美一区二区| 欧美国产日韩一区| 久久国产精品一区二区| 在线视频你懂得一区| 欧美国产综合视频| 久久欧美中文字幕| 久久国产精品久久精品国产| 亚洲欧洲日本专区| 亚洲高清在线观看一区| 国产日韩精品久久久| 欧美多人爱爱视频网站| 免费成人网www| 久久夜色精品国产欧美乱| 久久精品欧洲| 农夫在线精品视频免费观看| 久久精品一区| 久久久久久久综合| 久久久99免费视频| 欧美风情在线观看| 久久综合99re88久久爱| 久久久久久久97| 久久一区欧美| 欧美精品久久天天躁| 欧美国产日本韩| 欧美日韩国产丝袜另类| 欧美日本高清视频| 国产精品r级在线| 国产欧美日本| 日韩视频二区| 久久久久久有精品国产| 欧美成人三级在线| 日韩视频免费观看高清在线视频| 在线视频你懂得一区| 亚洲一区二区三区在线看| 久久久99精品免费观看不卡| 欧美高清视频一区二区| 日韩一区二区福利| 久久精品国产77777蜜臀| 欧美黄色一区二区| 国产一区二区三区久久久久久久久 | 欧美xart系列在线观看| 日韩视频精品在线观看| 久久福利一区| 欧美午夜在线视频| 午夜精品久久久久久久久久久久| 亚洲片在线资源| 欧美中文在线观看国产| 日韩视频在线免费| 欧美成人有码| 亚洲福利在线看| 久久亚洲精选| 香蕉av777xxx色综合一区| 欧美日本在线| 在线午夜精品自拍| 亚洲人成网站999久久久综合| 久久综合影视| 一色屋精品视频免费看| 蜜臀91精品一区二区三区| 欧美一区二区三区四区在线观看| 欧美日韩在线观看一区二区三区 | 在线免费精品视频| 欧美电影电视剧在线观看| 久久人人爽人人爽| 亚洲第一在线| 亚洲精品久久久久久久久| 欧美日韩一区成人| 久久精品免费观看| 欧美大片国产精品| 99视频一区二区| 亚洲国产精品成人一区二区 | 欧美激情在线有限公司| 亚洲在线免费观看| 欧美激情精品久久久久久免费印度| 欧美中文字幕在线播放| 国产精品久久77777| 亚洲一区欧美激情| 欧美一区午夜精品|