freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)論文_基于vc的圖像處理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)(編輯修改稿)

2024-08-21 15:24 本頁面
 

【文章內(nèi)容簡介】 //選中之前選中的對象 If(m_pbmp!=NULL) //判斷位圖對象是否為空 delete m_pbmp; //釋放位圖對象 DelectObject(this); //釋放設(shè)備上下文 內(nèi)存畫布 CMemDC 只包含一個(gè)構(gòu)造函數(shù)和析構(gòu)函數(shù),其中,在構(gòu)造函數(shù)部分,將根據(jù)參數(shù) pDC 創(chuàng)建一個(gè)兼容的設(shè)備上下文,并且將 pDC 的內(nèi)容繪制在內(nèi)存畫布上;在析構(gòu)函數(shù)中,會(huì)將內(nèi)存畫布的內(nèi)容輸出到目標(biāo)設(shè)備的上下文中。 自定義全局函數(shù) 在 Visual C++中沒有提供直接的函數(shù)用于獲取文 件的名稱(去除擴(kuò)展名)和獲取文件的擴(kuò)展名(去除文件名)。為此,定義了兩個(gè)全局函數(shù)來獲取文件的名稱和文件擴(kuò)展名。函數(shù)定義如下: CString ExtractFileName(CStringamp。str) //獲取文件名稱 { intpos=(‘.’)} //反向查找 “ .” 的位置 return (pos); //從左方開始截取字符串,并返回截取的字符串 } CString GetFileExtended Name (CStringamp。strFile) //獲取文件擴(kuò)展名 { int pos=(‘.’); //反向查找“ .”的位置 return (()pos1) } 在為本系統(tǒng)設(shè)計(jì)自定義菜單時(shí),由于主界面對話框的寬度可以調(diào)整,導(dǎo)致菜單欄的高度會(huì)發(fā)生變化,如圖 所示。 圖 菜單欄高 度 從 中可以發(fā)現(xiàn),當(dāng)對話框的寬度變化時(shí),菜單欄的高度也會(huì)發(fā)生變化,這在繪制菜單的背景顏色時(shí)候會(huì)帶來困難,需要從 動(dòng)態(tài)鏈接庫中導(dǎo)出 菜單欄高度 5 該函數(shù)。流程圖如下: 自定義菜單 為了使程序界面更加美觀,在本系統(tǒng)中自定義了一個(gè)菜單,實(shí)現(xiàn)菜單的特殊效果顯示,如圖 所示 : 圖 自定義菜單 在 Visual C++中,實(shí)現(xiàn)自定義菜單是比較容易的, MFC 類庫提供了 CMenu 類用于 設(shè)計(jì)菜單,用戶只要從該類派生一個(gè)子類,然后改寫 MeasureItem 方法,hModule 址 void*pVoid=(void*)GetProcAddress(hModule,GetMenuBarInfo)。 pVoid 數(shù) ((FunGetMenuInfo)pVoid)(hwnd,idObject, ::FreeLibrary(hModule)。 資源 ::FreeLibrary(hModule)。 資源 N Y N Y HMODULEhModule=::LoadLibrary()。 6 設(shè)置菜單項(xiàng)的高度和寬度;改寫 DrawItem 方法,根據(jù)菜單項(xiàng)的不同狀態(tài),繪制不同效果的菜單項(xiàng)就可以了。具體設(shè)計(jì)如下 : (1) 從 CMenu 類派生一個(gè)子類 CCustomMenu。 (2) 定義一個(gè)菜單項(xiàng)結(jié)構(gòu) CMenuItem,記錄菜單項(xiàng)的信息。代碼如下: //定義一個(gè)結(jié)構(gòu),記錄菜單項(xiàng)的詳細(xì)信息 Struct CMenuItem { CString m_Menutext。 //菜單項(xiàng)的文本 UINTm_ImageIndex。 //菜單項(xiàng)圖像索引 Int m_MenuType 。 // 菜單項(xiàng)的類型 2:頂層菜單, 1:彈出式菜單, 0:分隔條,其他:普通菜單 (3) 向 CCustomMenu 類中添加成員變量 。 (4) 在 CCustomMenu 類的構(gòu)造函數(shù)中初始化成員變量。 CCustomMenu::CCustomMenu() { m_ItemCount = 0; //初始化菜單項(xiàng)數(shù)量 m_Index = 0。 //初始化整型變量 m_MenuList = NULL。 //初始化菜單列表 m_BkColor = RGB(204,199,186)。 //初始化背景顏色 m_SelTopColor = RGB(193, 210, 238)。 //初始化頂層菜單顏色 m_RandColor = FALSE。 //是否采用隨機(jī)顏色 } (5) 在 CCustomMenu 類的析構(gòu)函數(shù)中釋放成員變量占據(jù)的堆空間。 CCustomMenu::~CCustomMenu() { if (m_ItemCount 0) //如果菜單項(xiàng) 0,則釋放菜單列表 delete []m_MenuList。 } (6) 向 CCustomMenu 類中添加 GetAllItemCount 方法,獲取菜單項(xiàng)的數(shù)量,當(dāng)前流程圖如下: 7 (7) 向 CCustomMenu 類中添加 AttachMenu 方法,附加菜單句柄到CCustomMenu 類對象上 BOOL CCustomMenu::AttatchMenu(HMENU hMenu) { Attach(hMenu)。 //附加菜單句柄到菜單對象 GetAllItemCount(hMenu,m_ItemCount)。 //獲取菜單項(xiàng)的數(shù)量 if (m_ItemCount 0) //判斷菜單項(xiàng)數(shù)量是否 0 m_MenuList = new CMenuItem[m_ItemCount]。 //創(chuàng)建菜單列表 return TRUE。 } (8)向 CCustomMenu 類中添加 SetMenuItemInfo 方法,將每個(gè)菜單項(xiàng)關(guān)聯(lián)一個(gè) CMenuItem結(jié)構(gòu)對象。 (9)向 CCustomMenu類中添加 GetTopMenuWidth方法,獲取頂層菜單的高度。流程圖如 下: CMenu*pMenu=CMenu::FromHandle(hMenu)。 pMenu FirstFind intcount=pMenuGetMenuItemCount()。 inti=0 icount i++ Multi intemcount=0 Y Y Y N N N 8 (10)向 CCustomMenu 類中添加 GetClientMenuRgn 方法,獲取菜單欄中的非菜單項(xiàng)區(qū)域。流程圖如下: //獲取菜單欄中非菜單項(xiàng)區(qū)域 HRGN CCustomMenu::GetClientMenuRgn() MENUBARINFO MenuInfo。 //定義菜單項(xiàng)信息對象 memset(amp。MenuInfo,0,sizeof(MENUBARINFO))。 //初始化菜單項(xiàng)信息 = sizeof(MENUBARINFO)。 //設(shè)置菜單項(xiàng)信息結(jié)構(gòu)的大小 GetMenuBarInfo(AfxGetMainWnd()m_hWnd,OBJID_MENU,0,amp。MenuInfo)。 CRect rc = 。 //獲取菜單欄的區(qū)域 int MenuCount = GetMenuItemCount()。 //獲取頂層菜單的數(shù)量 CRect *pRC = new CRect[MenuCount]。 //定義一個(gè)區(qū)域指針,記錄菜單項(xiàng)區(qū)域 HRGN *pRgn = new HRGN[MenuCount]。 //定義一個(gè)選區(qū)指針,記錄菜單項(xiàng)選區(qū) CRect winRC。 //定義一個(gè)區(qū)域?qū)ο? AfxGetMainWnd()GetWindowRect(winRC)。 //獲取主窗口區(qū)域 HRGN retRgn = CreateRectRgn(0,0,0,0)。 HRGNMenuClientRgn = CreateRectRgn(0,0,0,0)。 for (int j=0。 jMenuCount。 j++) //組合菜單項(xiàng)的區(qū)域 //去除菜單欄中菜單項(xiàng)的區(qū)域,以獲取非菜單項(xiàng)區(qū)域 CombineRgn(retRgn,MenuRgn,MenuClientRgn,RGN_DIFF)。 for ( j=0。 jMenuCount。 j++) intCount=GetMenuItemCount() iCount ::GetMenuItemRect(AfxGetMainWnd()m_hWnd,m_hMenu,i,rc)。 i++ returnwidth。 N Y inti=0 9 (11)向 CCustomMenu 類中添加 SetMenuItemText 方法,繪制菜單項(xiàng)文本。 void CCustomMenu::SetMenuItemText(CDC *pDC, LPSTR strMenuText, CRect Rect) { (20,0)。 pDCDrawText(strMenuText,Rect,DT_SINGLELINE|DT_VCENTER|DT_LEFT)。 } (12)向 CCustomMenu 類中添加 DrawTopMenuBk 方法,繪制頂層菜單的背景顏色。 (13)向 CCustomMenu 類中添加 DrawSepMenu 方法,繪
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1