在线看毛片视频-国产免费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>
  • 丰满少妇大力进入| 免费观看美女裸体网站| 香港三级韩国三级日本三级| 欧美日韩一级在线| 自拍一级黄色片| 日韩成人av免费| 国产成人在线综合| 欧美一级特黄aaa| 色婷婷一区二区三区在线观看| 国产真实乱子伦| 天堂中文视频在线| gogogo高清免费观看在线视频| 能看的毛片网站| 91极品视频在线观看| 亚洲综合婷婷久久| 欧美日韩在线免费观看视频| 特级黄色录像片| 男人的天堂成人| 久久99久久久久久| 黄色片一级视频| 第一区免费在线观看| 可以看污的网站| 成年人深夜视频| 欧美丰满熟妇xxxxx| 可以看污的网站| 青春草国产视频| 亚洲综合在线网站| 污污视频在线免费| 欧美精品自拍视频| 亚洲综合欧美激情| 国产成人永久免费视频| 欧美日韩大尺度| 国产精品秘入口18禁麻豆免会员| 国产视频一区二区三区在线播放| 午夜不卡福利视频| 日韩欧美在线播放视频| 中文字幕制服丝袜在线| 日日碰狠狠添天天爽超碰97| 日本激情视频在线播放| 性做爰过程免费播放| 久久精品午夜福利| 国产欧美精品aaaaaa片| 亚洲va在线va天堂va偷拍| 国产一区二区三区在线免费| 99热成人精品热久久66| 国内精品国产三级国产99| 国产三级三级三级看三级| 999一区二区三区| 欧美精品色视频| 久久无码高潮喷水| 国产a级黄色大片| 亚洲欧美在线精品| 中国丰满人妻videoshd| 日韩高清在线一区二区| 麻豆一区二区三区视频| 丁香花在线影院观看在线播放| theporn国产精品| 亚洲天堂av线| 日本少妇高潮喷水视频| 国产精品videossex国产高清 | www.国产在线播放| 日批视频在线免费看| 国产精品免费看久久久无码| 久久久久久久久久一区| 91看片在线免费观看| 国产肥臀一区二区福利视频| 每日在线观看av| 亚洲精品久久久久久久蜜桃臀| avove在线观看| 亚洲欧美一区二区三区不卡| 网站在线你懂的| 香蕉视频色在线观看| aaaaaaaa毛片| 肉大捧一出免费观看网站在线播放| 两性午夜免费视频| 99亚洲国产精品| 2018中文字幕第一页| 秋霞无码一区二区| 男女猛烈激情xx00免费视频| av免费观看大全| 国产l精品国产亚洲区久久| 97公开免费视频| 久久婷五月综合| 女人床在线观看| 男女高潮又爽又黄又无遮挡| 国产裸体免费无遮挡| 91亚洲精品久久久蜜桃借种| 成人手机视频在线| 国产成人亚洲综合无码| 夫妻免费无码v看片| 国产小视频精品| 福利在线小视频| 欧美 国产 日本| jizzzz日本| 久久www视频| 999精品视频在线| av动漫在线播放| 99草草国产熟女视频在线| www,av在线| 999久久欧美人妻一区二区| 国产一区二区网| 制服丝袜中文字幕第一页| 无码 制服 丝袜 国产 另类| 成人亚洲视频在线观看| 亚洲国产日韩欧美在线观看| 永久免费看av| 国产嫩草在线观看| 激情小视频网站| 中国黄色片免费看| 欧美日韩成人免费视频| 欧美日韩在线免费观看视频| 黄色片一级视频| 成人免费视频91| 中国一级大黄大黄大色毛片| 美女少妇一区二区| 久久国产色av免费观看| 日韩精品在线观看av| 亚洲黄色av片| 黄色国产小视频| 日本三级免费网站| 国产极品在线视频| 高清欧美精品xxxxx| 在线免费黄色网| 亚洲精品视频三区| wwww.国产| 国产一级特黄a大片免费| 日本午夜激情视频| 少妇av一区二区三区无码| 韩国无码av片在线观看网站| 男女爱爱视频网站| 欧美a级黄色大片| 日本高清免费在线视频| 9l视频白拍9色9l视频| 国产wwwxx| 欧美丰满熟妇xxxxx| 成年人在线看片| 亚洲高清在线免费观看| 免费看黄色一级大片| 欧美婷婷精品激情| 亚洲一级片av| 日本免费a视频| 国产美女网站在线观看| 日本中文字幕片| 成年网站在线播放| 四季av一区二区三区| 中文字幕在线视频一区二区| 国产精品久久成人免费观看| 国产a级黄色大片| 中国丰满人妻videoshd| 我看黄色一级片| 国产精品自在自线| 日韩av中文字幕第一页| 18岁网站在线观看| 亚洲美女爱爱视频| 91精品一区二区三区四区| 国精产品一区一区三区视频| 男人靠女人免费视频网站| 亚洲福利精品视频| 伊人再见免费在线观看高清版| 免费毛片网站在线观看| 色噜噜狠狠永久免费| 日本精品一区在线| 激情深爱综合网| 欧美专区第二页| 波多野结衣50连登视频| 潘金莲激情呻吟欲求不满视频| 久久久久亚洲av无码专区喷水| 欧美 丝袜 自拍 制服 另类| 色多多视频在线播放| 激情五月婷婷六月| 一道本视频在线观看| 欧美激情亚洲天堂| 日韩av.com| 成年人网站大全| www.好吊操| 九九九久久久久久久| 日本日本19xxxⅹhd乱影响| 中文字幕线观看| 超碰在线97免费| 男人日女人bb视频| 91亚洲精品国产| dy888午夜| 99热一区二区| 少妇性饥渴无码a区免费| 欧美黄网在线观看| 国产精品夜夜夜爽张柏芝| 超碰在线公开97| 国产福利一区视频| 无码人妻丰满熟妇区96| 欧美成人精品免费| 精品免费久久久久久久| 亚洲成人手机在线观看| 性chinese极品按摩| 成年人免费在线播放| 青青草成人免费在线视频| 日本成人性视频| 欧美精品久久96人妻无码| 中文字幕一区久久| 超碰人人草人人| 日本一二三四区视频|