在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開發(fā)教程 > 詳細頁面

在MFC下完成圖像放大鏡

在MFC下完成圖像放大鏡

更新時間:2019-06-29 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

信息產(chǎn)業(yè)部電子第二十二研究所青島分所 郎銳  

一、 引言

當(dāng)我們想仔細觀察某個細微的東西時,一般都會使用放大鏡。而要看清顯示在計算機屏幕上的圖片或文字時通常也
可以借助于Windows操作系統(tǒng)附帶的放大程序來實現(xiàn)。但該程序只能以固定的放大倍數(shù)去進行觀看,有時并不能滿足我們
的需要。本文就通過MFC基本類庫提供的StretchBlt函數(shù)來實現(xiàn)對屏幕圖象的局部放大,并且可以隨意放大、縮小,選取
到合適的放大倍數(shù)來對圖像的細節(jié)進行觀察。

二、 設(shè)計與實現(xiàn)

本程序主要用來對圖像的局部進行可調(diào)倍數(shù)的放大,應(yīng)當(dāng)具有以下主要功能:

1. 移動MOUSE放大顯示圖像的不同部位
2. 左擊增加放大倍率、右擊減少放大倍率。  

從光學(xué)角度來看,對物體的放大成像是通過把較小的真實物體顯示成尺寸較大的虛像來實現(xiàn)的。因此我們可以用類
似的原理,把圖像中待放大的區(qū)間從較小的顯示范圍拉伸到一個比較大的顯示范圍即可達到圖像放大的效果,兩個區(qū)間
的比值也就是圖像的放大倍率。可以通過縮小源區(qū)間的范圍或擴大放大區(qū)間的范圍來實現(xiàn)放大倍率的調(diào)整。在MFC基本類
庫中提供有CDC類的StretchBlt函數(shù)可以將一幅位圖從一個源矩形以一定的光柵操作拷貝到另外一個不同大小的目標矩形
中去,因此可以用此函數(shù)來實現(xiàn)圖象放大的功能,其函數(shù)原形聲明如下:

BOOL StretchBlt( int x, int y, //目標矩形的坐標原點
int nWidth, int nHeight, //目標矩形的長度和寬度  
CDC* pSrcDC, //源設(shè)備環(huán)境句柄
int xSrc, int ySrc, //源矩形的坐標原點
int nSrcWidth, int nSrcHeight, //源矩形的長度和寬度
DWORD dwRop ); //光柵操作標志

當(dāng)指定的源和目標矩形的寬度或高度不一樣時,StretchBlt函數(shù)將創(chuàng)建一個位圖的鏡像。如果是寬度有變化,就沿x軸
創(chuàng)建鏡像;如果是高度上有變化就沿y軸創(chuàng)建鏡像。而且該函數(shù)可以在內(nèi)存中對源圖象做拉伸或壓縮處理后再拷貝到目標矩
形中去。

要放大圖像首先要把圖像顯示出來,一般可以從文件動態(tài)裝載或者直接從資源中用LoadBitMap讀取位圖資源。下面的代
碼放在視類的OnDraw函數(shù)中,用以在第一次調(diào)用時將位圖裝載并顯示出來,以后再被調(diào)用只是負責(zé)重畫:

……
static bool load;
if (!load)
{
BITMAP bm;
load = !load;
//裝載位圖到 m_pBitmap
m_pBitmap->LoadBitmap(IDB_BITMAP1);
//創(chuàng)建相關(guān)的設(shè)備環(huán)境
m_pdcMem->CreateCompatibleDC(pDC);
//將位圖從m_ pBitmap中裝載到m_pdcMem中
m_pdcMem->SelectObject(m_pBitmap);
m_pBitmap->GetObject(sizeof(bm),&bm);
m_sizeSource.cx = bm.bmWidth;
m_sizeSource.cy = bm.bmHeight;
m_sizeDest = m_sizeSource;
//把位圖從m_pdcMem中裝載到當(dāng)前正在使用的設(shè)備環(huán)境中
pDC->StretchBlt(0,0,m_sizeSource.cx,m_sizeSource.cy,m_pdcMem,0,0,m_sizeSource.cx,m_sizeSource.cy,mana);
}
else
{
//重畫圖像
pDC->StretchBlt(0,0,m_sizeSource.cx,m_sizeSource.cy,m_pdcMem,0,0,m_sizeSource.cx,m_sizeSource.cy,mana);
SetCursor(NULL);//隱藏鼠標
}

要實現(xiàn)前面提到的第一個功能:移動MOUSE放大顯示圖像的不同部位,顯然首先要在WM_MOUSEMOVE消息的響應(yīng)函數(shù)里編寫
代碼。以整形變量s和d來分別表示所選取的源和目標區(qū)域的大小,再通過消息響應(yīng)函數(shù)OnMouseMove的入口參數(shù)point來確定當(dāng)
前的鼠標位置就可以計算出我們要選取的源和目標區(qū)域在圖像的位置。放大的工作只需通過StretchBlt函數(shù)將源區(qū)域中所在的
圖像拉伸到目標矩形那么大,并拷貝給目標區(qū)域即可實現(xiàn)所選區(qū)域的放大效果,下面是部分主要代碼:

……
//確定目標區(qū)域、源區(qū)域的坐標位置
CRect srect,drect,mrect;
srect.left = point.x - s;
srect.top = point.y - s;
srect.right = point.x + s;
srect.bottom = point.y + s;
drect.left = point.x - d;
drect.top = point.y - d;
drect.right = point.x + d;
drect.bottom = point.y + d;

mrect.left = oldx - d;
mrect.top = oldy - d;
mrect.right = oldx + d;
mrect.bottom = oldy + d;
dd = 2*d;
//獲取可用設(shè)備環(huán)境句柄
CDC * pDC = GetDC();
OnPrepareDC(pDC);
if (recover)
{
pDC->BitBlt(mrect.left,mrect.top,dd,dd,m_pdcMem,mrect.left,mrect.top,mana);
}
//隱藏鼠標
SetCursor(NULL);
//拉伸放大
pDC->StretchBlt(drect.left,drect.top,drect.Width(),drect.Height(),m_pdcMem,srect.left,srect.top,srect.Width(),srect.Height(),SRCCOPY);
//保存當(dāng)前鼠標位置備用
oldx = point.x; oldy = point.y;
//釋放設(shè)備環(huán)境句柄
ReleaseDC(pDC);
recover = true;
……

為了實現(xiàn)第二個功能:左擊增加放大倍率、右擊減少放大倍率,可以分別在消息WM_LBUTTONDOWN和消息WM_RBUTTONDOWN中添加改
變選取區(qū)域大小的代碼來實現(xiàn)。如果選取源矩形不變而改變目標矩形的大小會隨著放大倍數(shù)的增大,顯示區(qū)域也不斷增大,當(dāng)放大到
一定程度的時候會另人無法忍受,因此選取通過縮放源矩形大小來控制放大倍數(shù)的方案:

void CZoomInView::OnRButtonDown(UINT nFlags, CPoint point)  
{
if (s < 60)  
{
SetCursor(NULL);
s+=3;
OnMouseMove(nFlags, point);
}  
CView::OnRButtonDown(nFlags, point);
}
……
void CZoomInView::OnLButtonDown(UINT nFlags, CPoint point)  
{
if(s>5)
{
s-=3;  
SetCursor(NULL);
OnMouseMove(nFlags, point);
}
CView::OnLButtonDown(nFlags, point);
}

小結(jié):本文通過對MFC庫函數(shù)StretchBlt的使用來實現(xiàn)了對圖像位圖的局部細節(jié)的放大功能。本程序只是通過了一個簡單的例子做了講
解,重點放在StretchBlt函數(shù)的應(yīng)用上,功能上也只實現(xiàn)了對本程序客戶區(qū)圖象的放大,如要對屏幕上其他程序和桌面進行放大則還需
要引入系統(tǒng)鉤子(HOOK)的技術(shù)來實現(xiàn),并且需要把處理代碼放到動態(tài)連接庫中才可以實現(xiàn)全局鉤子。本程序在Windows 98下,以
Microsoft Visual C++ 6.0編譯通過。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • 亚洲男人天堂2021| 91女神在线观看| 久久久一二三四| 亚洲一区二区福利视频| 日韩av播放器| 91av在线免费播放| 久久精品.com| 国产日产欧美视频| 18禁免费观看网站| 九色自拍视频在线观看| 可以看毛片的网址| 分分操这里只有精品| 欧美亚洲黄色片| 日韩av综合在线观看| 国产在线播放观看| 大j8黑人w巨大888a片| 欧美深夜福利视频| 国产偷人视频免费| 免费看污污网站| 亚洲精品永久视频| 好吊色这里只有精品| a级网站在线观看| 国产曰肥老太婆无遮挡| 免费看国产曰批40分钟| 亚洲色欲综合一区二区三区| 日韩一级免费在线观看| 一起操在线视频| 99re8这里只有精品| 国产精品久久国产| 2022亚洲天堂| 亚洲免费成人在线视频| 国产精品视频一二三四区| 免费av观看网址| 亚洲免费黄色网| 丰满的少妇愉情hd高清果冻传媒| 日韩少妇内射免费播放| 17c国产在线| 日韩视频在线视频| 日本激情综合网| 男人天堂av片| 在线观看日本一区二区| 妺妺窝人体色www看人体| 可以免费观看av毛片| 成人在线观看www| 九热视频在线观看| av在线观看地址| 天堂在线一区二区三区| 国产视频一视频二| 婷婷视频在线播放| 欧美日韩亚洲自拍| 国产视频九色蝌蚪| 性生活免费观看视频| 久久久久国产一区| 777米奇影视第四色| 成人国产在线看| 中文字幕在线视频一区二区| av无码精品一区二区三区| 福利视频免费在线观看| 精品久久免费观看| a在线观看免费视频| 欧美日韩在线不卡视频| 男人天堂av片| 久久av高潮av| 日韩精品久久一区二区| 特级毛片在线免费观看| 天天干天天操天天玩| 毛片一区二区三区四区| 国模吧无码一区二区三区| 日本一级黄视频| 伊人再见免费在线观看高清版| 伊人五月天婷婷| 国产成人精品免费看在线播放| 亚洲一级免费观看| 色免费在线视频| 午夜久久久精品| 手机版av在线| 在线成人免费av| 中日韩av在线播放| 亚洲精品成人在线播放| 国产一区二区在线观看免费视频| 视频二区在线播放| √天堂资源在线| 996这里只有精品| 欧美视频在线播放一区| 青青青国产在线视频| 久久99999| 国产精品久久久久久久99| 色哟哟免费网站| 国产黄视频在线| 欧美一级特黄a| 97超碰免费观看| 国模无码视频一区二区三区| 日本中文字幕高清| 91aaa精品| 拔插拔插海外华人免费| 99草草国产熟女视频在线| 热久久久久久久久| 成人黄色av片| 91 视频免费观看| 97视频久久久| 91日韩精品视频| 免费不卡av在线| 五月婷婷之婷婷| 日韩精品―中文字幕| 亚洲a级黄色片| 秋霞无码一区二区| 国产精品igao网网址不卡| 国产av熟女一区二区三区 | 九热视频在线观看| 污污视频在线免费| 精品中文字幕av| 国产精品视频一二三四区| 日日噜噜噜噜久久久精品毛片| 国产一二三四区在线观看| 中文字幕国产传媒| av免费观看网| 日本一区二区三区四区五区六区| 亚洲午夜精品久久久久久人妖| 欧美国产日韩在线视频| 欧洲av无码放荡人妇网站| 丰满人妻一区二区三区53号| 中文字幕国产免费| 午夜精品久久久内射近拍高清| 欧美日韩dvd| 亚洲一区二区偷拍| 五月天激情视频在线观看| 波多野结衣家庭教师在线| 中文字幕精品在线播放| 在线观看岛国av| 一区二区三区 欧美| 成人羞羞国产免费网站| 男人日女人下面视频| 国产美女主播在线| 国内少妇毛片视频| 国产人妻人伦精品| 老司机激情视频| www.国产在线视频| 国产原创中文在线观看| 国产精品一线二线三线| 日b视频免费观看| 久无码久无码av无码| 国产高清www| 丰满少妇久久久| 亚洲欧洲日产国码无码久久99| 成人免费在线网| 内射国产内射夫妻免费频道| 各处沟厕大尺度偷拍女厕嘘嘘| 久久久免费视频网站| 热久久精品免费视频| 精品亚洲一区二区三区四区| 亚洲精品第三页| 日本美女爱爱视频| koreanbj精品视频一区| 欧美伦理视频在线观看| 手机福利在线视频| 国产精品视频网站在线观看| 国产v片免费观看| 色悠悠久久综合网| 成人在线免费观看网址| 三上悠亚久久精品| 黑人粗进入欧美aaaaa| 中文字幕黄色大片| ww国产内射精品后入国产| 91插插插插插插插插| 亚洲国产精品女人| 精品久久久久av| 91免费视频黄| 欧美在线观看视频网站| 中文字幕在线乱| 韩国一区二区av| www.69av| 欧美美女性视频| 看av免费毛片手机播放| 美女黄色片网站| 黑森林精品导航| 亚洲精品无码国产| www.色.com| 国产免费视频传媒| 成年女人18级毛片毛片免费 | 久久婷婷国产精品| 超碰97在线看| 免费精品99久久国产综合精品应用| 日韩精品一区二区在线视频| 亚洲欧美日韩综合网| 日韩精品一区二区三区久久| 黄色网络在线观看| 亚洲久久中文字幕| 国产精品第12页| 日韩欧美一区二| 97碰在线视频| 伊人网在线免费| 波多野结衣免费观看| 欧美第一页浮力影院| 国产视频一区二区三区在线播放| 欧美一级视频在线播放| 国产一二三四区在线观看| www.久久com| 国产福利片一区二区| 91小视频在线播放| 久久久久久久高清|