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

隨筆 - 298  文章 - 377  trackbacks - 0
<2007年8月>
2930311234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用鏈接

留言簿(34)

隨筆分類

隨筆檔案

文章檔案

相冊

收藏夾

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

下面要實(shí)現(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;
 // 打開文件并獲得文件的真實(shí)大小
 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)存對象的鎖定計(jì)數(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>
            国产一区二区三区免费在线观看 | 黑人一区二区三区四区五区| 欧美精品一卡二卡| 久久精品国产在热久久| 欧美日韩免费高清一区色橹橹| 欧美激情欧美激情在线五月| 欧美福利网址| 欧美日韩亚洲一区二| 国产精品成人观看视频免费 | 亚洲人www| 夜夜嗨av色综合久久久综合网| 亚洲日本欧美在线| 亚洲视频国产视频| 久久精品综合网| 欧美韩日一区| 亚洲一区二区欧美日韩| 亚洲欧美一区二区在线观看| 久久综合色天天久久综合图片| 欧美1区3d| 国产精品久久久久久亚洲毛片| 国产日本欧美在线观看| 亚洲电影在线看| 午夜精品久久久久久久99水蜜桃| 欧美一区高清| 日韩视频免费在线| 久久精品视频一| 欧美日韩三区| 亚洲盗摄视频| 久久九九热re6这里有精品| 亚洲国产日韩欧美| 午夜国产欧美理论在线播放| 免费在线一区二区| 国产伊人精品| 午夜精品成人在线| 亚洲第一精品电影| 久久久久欧美精品| 国产精品一区二区久久国产| 亚洲国产你懂的| 久久蜜桃精品| 亚洲欧美日韩视频二区| 欧美色大人视频| 亚洲精品在线免费| 久久精品日韩欧美| 一个人看的www久久| 嫩草国产精品入口| 在线观看成人小视频| 午夜在线精品| 中文在线不卡| 欧美天天综合网| 一区二区国产日产| 亚洲国产专区校园欧美| 久久在精品线影院精品国产| 国产视频亚洲| 欧美专区日韩视频| 亚洲欧美日韩人成在线播放| 欧美日韩综合久久| 一区二区三区日韩在线观看 | 久久男女视频| 中日韩在线视频| 欧美国产一区二区| 亚洲欧洲中文日韩久久av乱码| 久久这里有精品视频| 午夜亚洲激情| 国模精品娜娜一二三区| 欧美在线观看一区二区三区| 一本色道久久综合| 国产精品亚洲综合天堂夜夜| 午夜激情综合网| 欧美亚洲免费| 激情综合久久| 亚洲国产一区二区a毛片| 欧美刺激性大交免费视频| 亚洲国产精品久久久久秋霞不卡 | 一区二区高清在线观看| 亚洲精品自在久久| 欧美日韩国产系列| 欧美一级电影久久| 久久久国产精品亚洲一区| 亚洲黄色免费电影| 亚洲激情第一区| 欧美午夜大胆人体| 亚洲你懂的在线视频| 国产在线精品自拍| 亚洲欧洲免费视频| 国产精品一区一区三区| 玖玖综合伊人| 欧美日韩国语| 久久精品一区二区三区四区| 免费不卡亚洲欧美| 香蕉视频成人在线观看| 欧美一区网站| 一本色道久久综合| 久久成人免费网| 一区二区三区欧美成人| 午夜精品久久久久久久久久久久久| 韩日欧美一区二区| 亚洲黄色免费| 国产日韩精品视频一区| 亚洲电影免费观看高清完整版在线观看 | 日韩一二三区视频| 国产偷自视频区视频一区二区| 嫩草影视亚洲| 国产精品理论片在线观看| 麻豆91精品91久久久的内涵| 欧美美女操人视频| 久久久水蜜桃av免费网站| 欧美日韩国内自拍| 欧美激情视频在线播放| 国产精品视频免费| 亚洲区第一页| 亚洲欧美伊人| 国产欧美一区二区三区在线看蜜臀 | 亚洲精品国精品久久99热| 国产美女诱惑一区二区| 亚洲国产女人aaa毛片在线| 国产欧美日韩视频在线观看| 亚洲国产精品va在线看黑人动漫| 国产视频久久久久| 中文在线一区| 一区二区三区高清在线| 麻豆成人精品| 久久久综合香蕉尹人综合网| 国产精品久久午夜| 99视频一区二区三区| 亚洲精品色婷婷福利天堂| 久久精品一区二区三区中文字幕| 香蕉免费一区二区三区在线观看| 欧美日韩精品中文字幕| 亚洲激精日韩激精欧美精品| 亚洲第一搞黄网站| 久久久久**毛片大全| 久久久国产91| 国产一区二区三区日韩欧美| 亚洲欧美日韩直播| 久久国产精品一区二区三区| 国产日韩欧美91| 久久国产精品99国产精| 久久亚洲综合色| 在线不卡亚洲| 免费视频久久| 亚洲欧洲精品一区二区三区不卡| 亚洲剧情一区二区| 欧美精品久久久久久久久老牛影院| 亚洲国产欧美一区二区三区久久 | 亚洲精品久久久久久久久久久久| 亚洲国产成人在线视频| 免费亚洲电影| 99精品欧美一区| 午夜精品久久久久| 国产一区二区黄色| 久久久久成人精品| 欧美成人日韩| 99成人免费视频| 国产精品成人一区二区网站软件| 一区二区精品在线| 久久av一区二区三区| 精品福利电影| 欧美激情亚洲另类| 亚洲一区久久久| 久久综合图片| 99精品视频免费观看视频| 国产精品成人一区二区| 久久精品国产亚洲5555| 亚洲国产日韩一区二区| 亚洲欧美韩国| 在线成人免费视频| 欧美日韩妖精视频| 久久精品国产77777蜜臀| 亚洲国产精品久久91精品| 亚洲一区二区三区色| 韩日视频一区| 欧美日韩国产综合网| 国产精品99免费看| 裸体歌舞表演一区二区| 亚洲精品综合在线| 久久精品综合| 亚洲午夜视频在线观看| 在线电影欧美日韩一区二区私密| 欧美日本精品一区二区三区| 午夜电影亚洲| 日韩视频免费观看高清完整版| 欧美中文日韩| av成人黄色| 在线观看视频一区二区| 欧美视频在线一区| 美女福利精品视频| 午夜视频一区二区| 亚洲精选一区| 亚洲大片av| 久久这里有精品视频| 亚洲欧美大片| 亚洲六月丁香色婷婷综合久久| 国产一区二区激情| 国产精品亚洲欧美| 欧美午夜精品久久久久久浪潮 | 欧美天天在线| 欧美精品一区二区精品网 | 免费永久网站黄欧美| 欧美一区二区三区日韩| 宅男66日本亚洲欧美视频|