多媒體大作業(yè)._第1頁(yè)
多媒體大作業(yè)._第2頁(yè)
多媒體大作業(yè)._第3頁(yè)
多媒體大作業(yè)._第4頁(yè)
多媒體大作業(yè)._第5頁(yè)
已閱讀5頁(yè),還剩48頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、南京工程學(xué)院多媒體編程基礎(chǔ)課程綜合作業(yè)說(shuō)明書題 目 多媒體綜合設(shè)計(jì)班級(jí) K 軟件測(cè)試101學(xué)生姓名賀 穩(wěn)學(xué)號(hào) 2401018252013年6月22日一程序功能與設(shè)計(jì)思路(必須含有文字處理、繪圖、圖像、音頻視頻四部分內(nèi)容各3種以上功能,界 面及應(yīng)用方法自己根據(jù)軟件的特色綜合考慮, 每位同學(xué)必須自己設(shè)計(jì)一個(gè) 動(dòng)畫標(biāo) 志,放在【幫助】對(duì)話框中,或者窗口界面上)1、主界面1.1主界面實(shí)現(xiàn)功能說(shuō)明如下:菜單項(xiàng)包括文字處理、繪圖、圖像、音頻視頻,幫助,點(diǎn)擊進(jìn)入各個(gè)功能界面動(dòng)畫顯示小蛇吐信1.2界面效果顯示:4縛舍m袁字處涯 塗圖 圖片 魯洲瀕 粘或K軟件測(cè)試1G11.3主界面設(shè)計(jì)思路:首先創(chuàng)建一個(gè)基于對(duì)話

2、框的對(duì)話框的 MFC應(yīng)用程序,然后在資 源里添加五個(gè)菜單欄和四個(gè)對(duì)話框并將其對(duì)應(yīng)連接起來(lái),在主對(duì) 話框菜單欄中添加四個(gè)菜單選項(xiàng)與四個(gè)子對(duì)話框鏈接,以實(shí)現(xiàn)點(diǎn) 擊菜單項(xiàng)跳出對(duì)應(yīng)的對(duì)話框。其功能結(jié)構(gòu)如下:文字處理繪圖主界面音頻視頻播放幫助圖像處理2、文字處理2.1文字實(shí)現(xiàn)功能說(shuō)明如下:菜單項(xiàng)包括文字漸變、文字旋轉(zhuǎn)、顏色背景顏色顯示、文字 鏤空,點(diǎn)擊菜單項(xiàng)將顯示各個(gè)功能。2.2界面效果顯示:文宇漸變誦京工程學(xué)院!逹Dialog5文宇漸殳J文室就無(wú)文宇謖空請(qǐng)干姜找我要:*fc文室新變文宇血轉(zhuǎn)文宇謖空J(rèn)享背曇顏Enfrn78#2.3文字處理功能結(jié)構(gòu)圖:文字處理傾斜文字#3、繪圖工具3.1繪圖工具實(shí)現(xiàn)功能如

3、下:畫圓畫橢圓畫矩形#3.2功能界面效果顯示Dialoa94、圖像處理4.1圖像處理實(shí)現(xiàn)功能如下: 從本地磁盤打開文件 圖片去色 浮雕效果 顏色拾取銳化效果顏色取反4.2功能界面效果顯示10.3圖像處理功能結(jié)構(gòu)圖:打開k11銳化i圖片處理去色取反鏤空125、音頻視頻播放5.1音頻視頻功能實(shí)現(xiàn):從本地磁盤添加音頻視頻文件雙擊播放音頻視頻文件點(diǎn)擊播放按鈕播放文件點(diǎn)擊上一個(gè)、下一個(gè)選擇當(dāng)前文件的上一個(gè)、下一個(gè)文件 5.2功能界面顯示Dialog5.3音頻視頻播放功能結(jié)構(gòu)圖:二. 相關(guān)原理知識(shí)介紹1 輸出指定字體定義系統(tǒng)以外的字體,可以調(diào)用函數(shù)GreateFont自行創(chuàng)建HFon t=CreateF

4、ont(int nHeight,字體高度,0采用系統(tǒng)缺省值,使用邏輯單位int nWidth,字體寬度,取0則由系統(tǒng)根據(jù)高寬比取最佳值int nEscapement, 每行文字相對(duì)于頁(yè)底的角度,單位為 0.1度int nOrie natio n,每個(gè)文字相對(duì)于頁(yè)底的角度,單位為 0.1度DWORD n Weight,字體粗細(xì)度,范圍為 01000DWORD Dwltalic,II如果要求字體傾斜,則取非零DWORD dwUnderline,如果要求下劃線,則取非零DWORD dwStrikeout, II如果要求中劃線,則取非零DWORD dwCharset,字體所屬字符集DWORD dwOu

5、tputPrecision, 輸出精度,一般取缺省值 OUT_DEFAULT_PRECISDWORD dwClipPrecisio n,剪裁精度,常取缺省值 CLIP_DEFAULT_PRECISDWORD dwQuality,輸出質(zhì)量,一般取缺省值DEFAULT_QUALITYDWORD dwPitchA ndFamily, II 字體名)2.文本輸出 常用的文本輸出函數(shù) TextOut原型如下:BOOL TextOut(HDC hdc,int X, int Y,IIX, Y為用戶區(qū)中字符串的起始坐標(biāo)LPCTSTR lpstri ng, IIlpstri ng 為顯示的字符串int nCou

6、ntIInCount為字符串中的字節(jié)數(shù));2、簡(jiǎn)單繪圖工具2.1繪圖的基本方法實(shí)現(xiàn)簡(jiǎn)單圖形的繪制,繪圖功能中,有繪制直線、矩形、橢圓、涂鴉等。用 到的方法如下:CPoi nt MoveTo(i nt x,int y);II 直線起點(diǎn)CPoi nt Lin eTo(i nt x,int y);II 直線終點(diǎn)BOOL Recta ngle( int x1,i nt y1,i nt x2,i nt y2);繪制矩形BOOL Ellipse(i nt x1,i nt y1,i nt x2,i nt y2);繪制橢圓涂鴉部分,以鼠標(biāo)移動(dòng)的軌跡畫線。同樣要用到MouseMove()函數(shù)。使起點(diǎn)為鼠標(biāo)前一個(gè)

7、位置,終點(diǎn)為鼠標(biāo)當(dāng)前位置,以畫直線的方式完成。對(duì)于線型、線寬、顏色的設(shè)置,通過(guò)使用顏色通用對(duì)話框完成。2.2繪圖時(shí)需要用到的設(shè)備環(huán)境類介紹設(shè)備環(huán)境類CDC提供了繪制和打印的全部函數(shù)。為了能讓用戶使用一些特殊的設(shè)備環(huán)境,CDC還派生了 CPaintDC、CClientDC、CWindowD和 CMetaFileDC 類。(1) CPai ntDC比較特殊,它的構(gòu)造函數(shù)和析構(gòu)函數(shù)都是針對(duì) On Pa int進(jìn)行的,但用戶一旦獲得相關(guān)的CDC旨針,就可以將它當(dāng)成任何設(shè)備環(huán)境(包括屏幕、 打印機(jī))指針來(lái)使用。CPaintDC類的構(gòu)造函數(shù)會(huì)自動(dòng)調(diào)用 BeginPaint ,而它的析 構(gòu)函數(shù)則會(huì)自動(dòng)調(diào)用E

8、ndPaint。(2) CClientDC只能在窗口的客戶區(qū)(不包括邊框、標(biāo)題欄、菜單欄以及狀態(tài)欄)中進(jìn)行繪圖,點(diǎn)(0,0)通常指的是客戶區(qū)的左上角。而CWindowD允許在窗 口的任意位置中進(jìn)行繪圖,點(diǎn)(0,0)指整個(gè)窗口的左上角。CWindowD和CClientDC構(gòu)造函數(shù)分別調(diào)用 GetWindowD(和GetDC但它們的析構(gòu)函數(shù)都是調(diào) 用ReleaseDC函數(shù)3圖像處理的基本方法顯示圖像的方法并不復(fù)雜,圖像已經(jīng)繪制好保存在文件中,需要做的工作就是有效加載圖像文件并讓它顯示出來(lái),這里我們討論幾種最常用的方法。17#Loadimage加載圖像該函數(shù)裝載圖標(biāo),光標(biāo),或位圖。函數(shù)原型:HAND

9、LE LoadImage(HINSTANCE hinst,/包含圖像的實(shí)例句柄,可以為NULLLPCTSTR lpszName/圖像的資源名稱,本機(jī)加載,完整路徑UINT uType/圖像類型int cxDesired/加載的位圖,參數(shù)為 0int cyDesired/加載的位圖,參數(shù)為 0UINT fuLoad);/返回加載的圖像句柄圖像文件只支持bmp類型的。獲取鼠標(biāo)位置的顏色值VC 提供了三個(gè)宏,用于獲取某一顏色的紅、綠、藍(lán)三基色。1) GetRValue宏該宏用于獲取指定顏色的紅顏色值2) GetGValue宏該宏用于獲取指定顏色的綠顏色值3) GetBValue宏該宏用于獲取指定顏色

10、的藍(lán)顏色值BYTE GetRValue(DWORD rgb );rgb標(biāo)識(shí)一個(gè)顏色值。返回值:指定顏色的紅色值。BYTE GetGValue(DWORD rgb );rgb標(biāo)識(shí)一個(gè)顏色值。返回值:指定顏色的綠色值。BYTE GetBValue(WORD rgb );rgb標(biāo)識(shí)一個(gè)顏色值。返回值:指定顏色的藍(lán)色值。提取顏色GetPixel 方法該方法用于獲取某一點(diǎn)的顏色值。語(yǔ)法:COLORREF GetPixel( int x, i nt y ) const;COLORREF GetPixel( POINT poi nt ) const;參數(shù): x 、y、point 標(biāo)識(shí)坐標(biāo)點(diǎn)。返回值:坐標(biāo)點(diǎn)的

11、顏色值。SetPixel 方法該方法用于設(shè)置某一點(diǎn)的顏色值。語(yǔ)法:COLORREF SetPixel( int x, i nt y, COLORREF crColor );COLORREF SetPixel( POINT poi nt, COLORREF crColor ); 參數(shù) x 、y、point 標(biāo)識(shí)坐標(biāo)點(diǎn)。crColor標(biāo)識(shí)設(shè)置的顏色值。返回值:坐標(biāo)點(diǎn)實(shí)際顯示的顏色值。4音頻視頻播放Wav文件用 mciSendComman(函數(shù)語(yǔ)法如下:MCIERROR mciSe ndComma nd(MCIDEVICEIDIDDevice , UINT uMsg, DWORDfdwComma n

12、d , DWORD_PTR dwParam);參數(shù)說(shuō)明:IDDevice :表示接收命令消息的MCI設(shè)備標(biāo)識(shí)符。uMsg:表示命令消息,使用 mciSendCommanc函數(shù),需要引用Mmsystem.h頭文件,鏈接 Winmm.lib庫(kù)文件。#i nclude "Mmsystem.h"/應(yīng)用頭文件#pragma comment (lib , 'Winmm.lib ” / 引用庫(kù)文定義一個(gè)CPlayWave類,用于打開波形設(shè)備、播放wav文件、關(guān)閉波形設(shè)備。向視圖類中添加一個(gè) CPlayWave成員。CPlayWave wave;向視圖類中添加一個(gè)按鈕,處理按鈕的單

13、擊事件。/定義一個(gè)CPlayWave成員void CPIayWaveView:O nBtPlay()wave.Stop();/停止播放wave.Play(m_hWnd ,"Windows XP 登錄音.wav");/開始播放 wav文件使用MClWndCreate函數(shù)播放avi文件在PlayAvi Dlg.app 中引用vfw.h頭文件并鏈接Vfw32.lib 庫(kù)文件。#include "Vfw.h"/ 引用頭文件#pragma comment (lib , 'Vfw32.lib ” / 鏈接庫(kù)文件處理OK'按鈕的單擊事件,彈出文件打開對(duì)

14、話框讓用戶選擇一個(gè)avi文件,并進(jìn)行播放。void CPIayAviDlg:O nOK()CFileDialog flDlg(TRUE , NULL, NULL, OFN_HIDEREADONLOFN_OVERWRITEPROMPT定義文件打開對(duì)話框判斷用戶是否單擊 0K 按鈕先釋放窗口,NULL"AVI 文件 |*.avi|", this);/if (flDlg.DoModal()=IDOK)/MCIWndDestroy(m_hAviWnd); / m_hAviWnd = MCIWndCreate(m_hWndMCIWNDF_SHOWMODE|MCIWNDF_NOTIFY

15、MODE , flDlg.GetPathName(); /創(chuàng)建 MCI 窗口MCIWndPlay(m_hAviWnd);/播放文件 /此時(shí)已可以播放在調(diào)用 MClWndCreate函數(shù)前,如果之前已經(jīng)創(chuàng)建了一個(gè)視頻窗口,則首先需要調(diào)用MClWndDestroy函數(shù)釋放視頻窗口。在對(duì)話框關(guān)閉時(shí)釋放 MCI窗口。void CPIayAviDlg:O nCan cel()MCIWndDestroy(m_hAviWnd); / 釋放 MCI窗口CDialog:O nCan cel();(手動(dòng)向?qū)υ捒蛑刑砑覱nNotifyMode消息方法,當(dāng)設(shè)備的模式發(fā)生改變時(shí)調(diào)用該方法。 添加)LRESULT CPl

16、ayAviDlg:OnNotifyMode(WPARAM wparam , LPARAM lparam)long code = (Iong)lparam;/ 獲取通知代碼if (code = MCI_MODE_STOP) II判斷avi文件是否播放完畢MCIWndClose(m_hAviWnd); II關(guān)閉 MCI 窗口return 0;在對(duì)話框的消息映射部分添加消息映射宏。ON_MESSAGE(MCIWNDM_NOTIFYM<ODfiNlotifyMode)三、設(shè)計(jì)方法及步驟1、主對(duì)話框首先啟動(dòng)VS2008創(chuàng)建一個(gè)基于對(duì)話框的應(yīng)用程序,然后在資源中添加四個(gè) 菜單欄,并將住對(duì)話框與主對(duì)話

17、框連接起來(lái), 在菜單欄里添加文字處理、簡(jiǎn)單繪 圖、圖像處理、音頻視頻播放,幫助五個(gè)菜單項(xiàng)。接著添加四個(gè)對(duì)話框,標(biāo)題分 別改為文字處理、簡(jiǎn)單繪圖、圖像處理、音頻視頻播放,并將其與對(duì)應(yīng)的菜單項(xiàng) 連接起來(lái)。然后將給四個(gè)對(duì)話框添加對(duì)話框類, 給主菜單的四個(gè)子菜單添加消息 響應(yīng)函數(shù),并調(diào)用對(duì)應(yīng)的對(duì)話框,將四個(gè)子對(duì)話框設(shè)為無(wú)模式對(duì)話框, 使點(diǎn)擊主 菜單的四個(gè)子菜單彈出對(duì)應(yīng)的對(duì)話框。對(duì)話框的ID號(hào)及對(duì)應(yīng)的菜單欄如下:ID標(biāo)題MENU 的 IDIDD_DIALOG1文字處理IDR_32771IDD_DIALOG2簡(jiǎn)單繪圖IDR_32772IDD_DIALOG3圖像處理IDR_32773IDD_DIALOG4音

18、頻視頻播放IDR 32774幫助對(duì)話框的ID號(hào)及對(duì)應(yīng)的菜單欄如下:1.1增加背景圖片:首先進(jìn)入資源視圖,添加一個(gè)位圖資源如下圖所示,點(diǎn)擊導(dǎo)入;然后給C綜合3Dlg類添加消息映射函數(shù) BOOL CWordDlg:OnEraseBkgnd(CDC* pDC,添加以下 代碼以實(shí)現(xiàn)根據(jù)窗口大小按比例顯示添加的背景圖片。代碼如下:BOOL CWordDlg:OnEraseBkgnd(CDC* pDC)/ TODO:在此添加消息處理程序代碼和/或調(diào)用默認(rèn)值CBitmap bitmap; /構(gòu)建位圖對(duì)象 bitmap.LoadBitmapA(IDB_BITMAP5); / 加載位圖 CDC dcCompat

19、ible; /創(chuàng)建于當(dāng)前DC兼容的DC dcCompatible.CreateCompatibleDC(pDC); / BITMAP bmp;bitmap.GetBitmap(&bmp);dcCompatible.SelectObject (&bitmap);CRect rect;GetClientRect(&rect);pDC->BitBlt(O,O,rect.Width(),rect.Height(), &dcCompatible,0,0,SRCCOPY);pDC->StretchBlt(O,O,rect.Width(),rect.Height(

20、), &dcCompatible,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);return TRUE;1.2連接四個(gè)對(duì)話框:給對(duì)話框添加類:選中對(duì)話框點(diǎn)擊右鍵,選擇添加類,然后進(jìn)入如下對(duì)話框,填入相應(yīng)的類名,點(diǎn)擊“完成”。添加代碼如下:首先添加四個(gè)對(duì)話框類的頭文件#include "DrawDIg.h"#include "ImagDIg.h"#include "WmpDIg.h"#include "WordDIg.h"然后給主對(duì)話框的子菜單添加對(duì)應(yīng)的消息響應(yīng)函數(shù),代碼如下:v

21、oid C綜?合?3Dlg:On32771()/ TODO:在0此?” ?加6命U令處鋦理元?程序6代洙碼?CWordDlg *pDlg= n ewCWordDlg;pDlg->Create(IDD_DIALOG1);pDlg->ShowWi ndow(SW_NORMAL);void C綜?合?3Dlg:On32772()/ TODO:在。此" ?加6命U令處鋦理元?程序6代洙碼?/ TODO:在。此?L ?加6命U令處鋦理元?程序6代洙碼?DrawDlg *pDlg= n ewDrawDlg;pDlg->Create(IDD_DIAL0G2); pDlg->

22、ShowWi ndow(SW_NORMAL);void C綜?合?3Dlg:On32773()/ TODO:在此? ?加6命U令處鋦理元?程1序b代洙?碼?CImagDlg *pDlg= newCImagDlg;pDlg->Create(IDD_DIALOG3);pDlg->ShowWi ndow(SW_NORMAL);void C綜?合?3Dlg:On32774()/ TODO:在0此??加6命U令處鋦理元?程序b代洙碼?CWmpDlg *pDlg=newCWmpDlg;pDlg->Create(IDD_DIALOG4);pDlg->ShowWi ndow(SW_NO

23、RMAL);2. 文字處理2.1增加背景:首先進(jìn)入資源視圖,添加一個(gè)位圖資源如下圖所示,點(diǎn)擊導(dǎo)入;然后給 CWordDIg類添加消息映射函數(shù) BOOL CWordDlg:OnEraseBkgnd(CDC* pDC,)添力卩以下代碼以實(shí)現(xiàn)根據(jù)窗口大小按比例顯示添加的背景圖片Bitmap Cursor Dialog HTML Icon MenuStrirg Table如 Toolbar 國(guó) Version代碼如下:BOOL CWordDlg:OnEraseBkgnd(CDC* pDC)/ TODO:在此添加消息處理程序代碼和 /或調(diào)用默認(rèn)值CBitmap bitmap; /構(gòu)建位圖對(duì)象 bitma

24、p.LoadBitmapA(IDB_BITMAP5); / 加載位圖CDC dcCompatible; /創(chuàng)建于當(dāng)前DC兼容的DCdcCompatible.CreateCompatibleDC(pDC); /BITMAP bmp;bitmap.GetBitmap(&bmp);dcCompatible.SelectObject (&bitmap);CRect rect;GetClientRect(&rect);pDC->BitBlt(O,O,rect.Width(),rect.Height(), &dcCompatible,0,0,SRCCOPY);pDC-

25、>StretchBlt(O,O,rect.Width(),rect.Height(), &dcCompatible,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);return TRUE;22按鈕事件響應(yīng)然后添加四個(gè)按鈕,修改其對(duì)應(yīng)的ID值,如下:名稱ID文字漸變IDC_BUTTON1文字鏤空IDC_BUTTON2顏色旋轉(zhuǎn)IDC_BUTTON3文字背景顏色I(xiàn)DC_BUTTON4然后給各個(gè)菜單項(xiàng)添加對(duì)應(yīng)的消息映射函數(shù),代碼如下:void CWordDlg:OnBnClickedButton1()/ TODO:在。此?v ?加o控?件 til ?知a處鋦理

26、元?程序6代洙碼?m=3;In validate();void CWordDlg:OnBnClickedButton2()27/ TODO:在。此?L ?加 o 控?件t ''m=4;In validate();?知a處鋦理元?程序6代洙碼?void/ TODO:在。此?L ?加 o 控?件t ''m=0;In validate();?知a處鋦理元?程序6代洙碼?CWordDlg:O nBn ClickedButto n3()28#void/ TODO:在。此?L廿6 控?件t '.:?知 a處鋦理元?程序6代洙碼?CWordDlg:O nBn Clic

27、kedButto n4()#m=2;In validate();void CWordDlg:OnPaint()CPaintDC dc( this ); / device con text for pain ti ng/ TODO:在。此心詛訴 ?加 o 消?息C處鋦理元?程序6代洙碼?/ 不?為a繪?圖?消?息C調(diào)獺?用? CDialogEx:OnPaint()CDC *pDC=GetDC();switch (m)case 0:CFo nt mFo nt;VERIFY(mFo nt.CreateFo nt(45,3O,O,O,FW_HEAVY,TRUE,FALSE,O,ANSI_CHARSET

28、,OUT_DEFAULT_PR ECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_SWISS宋?體?");CPen pen (PS_SOLID,2,RGB(255,O,O);pDC->SelectObject(& pe n);pDC->Begi nPath();CFo nt *pOldFo nt=pDC->SelectObject(&mFo nt); pDC->TextOut(100,100,_T("南?京?工O程學(xué)§院o"); pDC->E

29、ndPath(); pDC->StrokePath();mFo nt.DeleteObject();pDC->SelectObject(pOldFo nt);break;case 1:/CString str1O= _T("多 a")",_T(" 多 a"),_T("多 a"),_T(" 多 a"),_T(" 多 a"),_T(" 多 a"),_T("多 a"),_T("多 a");pDC->SelectSt

30、ockObject(NULL_BRUSH); pDC->SetBkMode(TRANSPARENT);CFo nt font;CBrush brush;CPe n pen;if (bdraw)for (int i=0;i<10;i+)fon t.CreatePoi ntFo nt(fo ntsizei,_T("宋?體?");CFo nt*oldfo nt=pDC->SelectObject(&fon t);pDC->SetTextColor(coli);pDC->TextOut(posxi,100,_T("南?京?工O程學(xué)&#

31、167;院 o");pDC->SelectObject(oldfo nt);fon t.Detach();break;case 2:SetTimer(0,300,NULL);CFo nt font;fon t.CreatePoi ntFo nt(500,_T("黑。體?"),pDC);CFon t* pOldFo nt=pDC->SelectObject(&fon t);/創(chuàng)洹?建輸?岀?字?符?串?.CString str (_T ("南?京?工O程學(xué) §院o!");/設(shè)E ?置?字?體?顏?色?pDC->

32、SetTextColor (RGB(m_ nRed,m _n Gree n,m_n Blue);/輸?岀?字?體 ?pDC->TextOut(50,100,str);pDC->SelectObject(pOldFo nt);ReleaseDC(pDC);break;case 3:CStri ng sTemp;sTemp="綜?合?作痢?業(yè)唉?說(shuō)卩明+書酣?,?請(qǐng)?不?要癮找。我。要癮???謝?謝?! ?CWnd* pWnd1;pWnd1 = GetDlgltem(IDR_MENU2); / 返刁?回?控?件t句?柄括?CClie ntDC dc1(pWnd1);dc1.Te

33、xtOutW(50,150,sTemp); / 在(static 控?件t 上?輸?岀?文?字?CClientDC dc2( this );dc2.SetBkColor(RGB(255,0,255);dc2.SetTextColor(RGB(0,0,255);dc2.TextOutW(150,150,sTemp);break;case 4:CDC*pDC=GetDC();CFont m_font;pDC->SetBkMode(TRANSPARENT);CRect m_rect;GetClie ntRect(m_rect);pDC->FillRect(m_rect,NULL);pDC

34、->SetViewportOrg(m_rect.Width()/2,m_rect.Height()/2);for (int i=1;i<360;i+=18)m_fon t.CreateFo nt(-14,-10,i*10,0,600,0,0,0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FF_ROMAN,_T宋?體?");pDC->SelectObject(&m_fon t);pDC->SetTextColor(RGB(255-i,i*255,i+50)

35、;pDC->TextOut(0,0,_T( "abcdefg"); m_fon t.DeleteObject(); break; void CWordDlg:OnTimer(UINT_PTR nIDEvent)/ TODO:在。此?L ?加6消?息C處鋦理元?程序。代洙碼?和或6調(diào)獺?用?默?認(rèn)?值卩if (m=2)if (m_nRed<=235)m_n Red += 20;else if (m_nRed = 255)m_n Red = 0;elsem_nRed = 255;if (m_nGreen>=25)m_n Gree n -= 20;else if

36、 (m_nRed = 0)m_n Gree n = 255;elsem_n Gree n = 0;if (m_nBlue<=235)m_n Blue += 20;else if (m_nBlue = 255)m_n Blue = 0;elsem_n Blue = 255;In validate。;/ 重?畫-文?字 ?/*else if(m=1)KillTimer(1);Alpha=Alpha-l_Alpha;for(int i=0;i<10;i+)Alpha仁Alpha+Decal*i;Cosin e=cos(Alpha1);fon tsizei=(Taille+30*Cosi

37、ne)*7;posxi=Midx+100*si n(Alpha1);coli=RGB(27+Cosi ne*80+50),(127+Cosi ne*80+50),0);bdraw=TRUE;In validate();SetTimer(1,50,NULL);*/elseKillTimer(O);KillTimer(1);CDialogEx:O nTimer( nIDEve nt);3. 繪圖3.1 增加背景圖片(同文字處理)3.2按鈕事件響應(yīng)然后添加三個(gè)按鈕,修改其對(duì)應(yīng)的ID值,如下:名稱ID畫圓IDC_BUTTON1畫橢圓IDC_BUTTON2話矩形IDC_BUTTON3然后給各個(gè)菜單項(xiàng)添加

38、對(duì)應(yīng)的消息映射函數(shù),代碼如下:void DrawDlg:OnBnClickedButton1()/ TODO:在。此?v ?加o 控?件?知a處鋦理元?程序6代洙碼?/CClientDC dc(this);/ dc.Ellipse(100,100,250,250);m=7;In validate();void DrawDlg:OnBnClickedButton2()/ TODO:在0此??加o控?件 t?知a處鋦理元?程序6代洙碼?/CClientDC dc(this);/dc.Recta ngle(100,100,300,300);m=8;In validate();void DrawDlg

39、:OnBnClickedButton3()/ TODO:在0此??加o控?件 tT?知 a處鋦理元?程序6代洙碼?/CClientDC dc(this);dc.Ellipse(100,100,350,250);m=9;In validate();void DrawDlg:OnPaint()CPaintDC dc( this ); / device con text for pain ti ng/ TODO:在0此心詛訴 ?加 o 消?息C處鋦理元?程序6代洙碼?/ 不?為a繪?圖?消?息C調(diào)獺?用? CDialogEx:OnPaint()CDC *pDC=GetDC();switch (m)c

40、ase 7:/ TODO:在0此?l?加o控?件?知 a處鋦理元?程序6代洙碼?CClientDC dc( this );dc.Ellipse(100,100,250,250); break;case 9:/ TODO:在0此"?加o 控?件?知a處鋦理元?程序6代洙碼?CClientDC dc( this );dc.Ellipse(100,100,350,250); break;case 8:/ TODO:在。此?L ?加o 控?件t=?知a處鋦理元?程序6代洙碼?CClientDC dc( this );dc.Recta ngle(100,100,300,300);4. 圖片處理

41、4.1 增加背景圖片(同文字處理)4.2.圖片處理對(duì)話框上添加三個(gè)按鈕,修改其對(duì)應(yīng)的 ID值,如下:名稱ID打開IDC_BUTTON1銳化IDC_BUTTON2去色I(xiàn)DC_BUTTON3取反IDC_BUTTON4鏤空IDC_BUTTON5一個(gè)picture control (顯示圖像),為他增加一個(gè)變量 HANDLE類型的公有變量 m_hbmp;函數(shù):void CImagDlg:OnBnClickedButton1()/ TODO:在。此?l ?加o控?件 tT ?知 a處鋦理元?程序6代洙碼?CString strPathName;CFileDialog Ope nDlg(TRUE);if

42、(OpenDlg.DoModal()=IDOK)/獲?得 ?窗洹? 口 0大洙??。緾Rect r;m_picture.GetClie ntRect(&r);CDC* pDC= m_picture.GetDC();strPathName = Ope nDlg.GetPathName();m_hbmp = Loadlmage(NULL,strPathName,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);CBitmap bmp;/ 定義?一?個(gè)?位?圖?對(duì)?象0bmp.Attach(m_hbmp);/將?位?圖?關(guān)?咲到?位?圖?句?柄括?上?CDQmemDC; m

43、emDC.CreateCompatibleDC(pDC);上?下?文?memDC.SelectObject (&bmp);BITMAP Bit Info; bmp.GetBitmap(& Bit In fo); int x = Bit In fo.bmWidth; long y = Bit In fo.bmHeight;/ 定義?一?個(gè)?設(shè)E ?備?上?下?文?/創(chuàng)洹?建兼?容的?設(shè)型?備?/選?中D位 ?圖?對(duì)?象6/定義?位?圖?結(jié)0構(gòu)1/獲?取?位?圖?信?息0/獲?取 ?位?圖?寬丨度0/獲?取?位?圖?高?度0pDC->StretchBlt(r.left,r.t

44、op,r.Width(),r.Height(),&memDC,0,0,BitI nfo.bmWidth,Bit In fo.bmHeight,SRCCOPY);/ pDC->BitBlt(0,0,x,y,&m emDC,0,0,SRCCOPY);/圖?bmp.Detach(); memDC.DeleteDC();/釋酣?放?設(shè)E?備?上 ?下?文?對(duì)?象6向C窗洹? 口 d中繪?制 ?位?/分?離?位?圖?句 ?柄括 void ClmagDlg:OnBnClickedButton2()/ TODO:在。此?L ?加6控?件 tT ?知 a處鋦理元?程序C代洙碼?CDC *

45、 m_dc;CRect m_rect;m_picture.GetClie ntRect(m_rect);m_dc = m_picture.GetDC();int r1,g1,b1,r2,g2,b2;for ( int i = 1;i<m_rect.right+1;i+)for (int j = 1; j< m_rect.bottom+1;j+)COLORREF color = m_dc->GetPixel(i,j);COLORREF n extcolor = m_dc->GetPixel(i-1,j-1);r1 = (color & OxFF);g1 = ( i

46、nt )(color & 65280)/ 256;b1 = ( int )(color & 0xFF0000) / 65536;r2 = (n extcolor & 0xFF);g2 = ( int )(nextcolor & 62580) / 256;b2 = ( int )(nextcolor & OxFFOOOO) / 65536;r1+= (r1 - r2) /2;g1 += (g1 - g2) / 2;bl += (b1 - b2) / 2;if ( r1 > 255)r1 = 255;if ( r1 < 0 )r1 = 0;if

47、( bl > 255)bl = 255;if (b1 < 0)bl = 0;if ( g1 > 255)g1 = 255;if ( g1 < 0 )g1 = 0;m_dc->SetPixel(i,j,RGB(r1,g1,b1);void ClmagDlg:OnBnClickedButton3()/ TODO:在。此?L ?加o控?件 tT ?知a處鋦理元?程序6代洙碼?CDC * m_dc;CRect m_rect;m_picture.GetClie ntRect(m_rect);m_dc = m_picture.GetDC();int r1,g1,b1,r2,g

48、2,b2;for ( int i = 1;i<m_rect.right+1;i+)for (int j = 1; j< m_rect.bottom+1;j+)COLORREF color = m_dc->GetPixel(i,j);double m_gray ;r1 = GetRValue(color);g1 = GetGValue(color);bl = GetBValue(color);m_gray = (0.38*r1+0.49*g1+0.1*b1);color = RGB(m_gray,m_gray,m_gray);m_dc->SetPixel(i,j,colo

49、r);void ClmagDlg:OnBnClickedButton4()/ TODO:在0此??加o控?件 t?知a處鋦理元?程序6代洙碼?CDC* pDC = m_picture.GetDC();CRect m_rect;m_picture.GetClie ntRect(m_rect);BYTE r,g,b;for ( int i=1; i<m_rect.Width();i+)for ( int j=1;j<m_rect.Height();j+)COLORREF clr= pDC->GetPixel(i,j);r = GetRValue(clr);g = GetGValu

50、e(clr);b = GetBValue(clr);r = abs(255-r);g = abs(255-g);b = abs(255-b);pDC->SetPixel(i,j,RGB(r,g,b);/*CDC * m_dc;CRect m_rect;m_HBitmap.GetClie ntRect(m_rect);m_dc =m_HBitmap.GetDC();int r1,g1,b1,r2,g2,b2;for (i nt i = 1;i<m_rect.right+1;i+)for (i nt j = 1; j< m_rect.bottom+1;j+)COLORREF co

51、lor = m_dc->GetPixel(i,j);COLORREF n extcolor = m_dc->GetPixel(i+1,j+1);double m_gray ;r1 = GetRValue(color);g1 = GetGValue(color);bl = GetRValue(color);r2 =GetRValue( nextcolor); g2 = GetGValue( nextcolor); b2 = GetBValue( nextcolor);ri=ri-r2+128;g1=g1-g2+128;b1=b1-b2+128;if(r1>255)r1 = 25

52、5;else if(r1<0)r1 = 0;if(g1>255)g1 = 255;else if(g1<0)g1 = 0;if(b1>255)b1 = 255;else if(b1<0)b1 = 0;color = RGB(r1,g1,b1); m_dc->SetPixel(i,j,color);*/void ClmagDlg:OnBnClickedButton5()/ TODO:在0此??加o控?件 tT ?知a處鋦理元?程序6代洙碼?CDC * m_dc;CRect m_rect;m_picture.GetClie ntRect(m_rect);m_dc

53、 = m_picture.GetDC();int r1,g1,b1,r2,g2,b2;for ( int i = 1;i<m_rect.right+1;i+)for (int j = 1; j< m_rect.bottom+1;j+)COLORREF color = m_dc->GetPixel(i,j);COLORREF n extcolor = m_dc->GetPixel(i+1,j+1);double m_gray ;r1 = GetRValue(color);g1 = GetGValue(color);bl = GetRValue(color);r2 =GetRValue( nextcolor);g2 = GetGValue( nextcolor);b2 = GetBValue( nextcolor);ri=ri-r2+128;g1=g1-g2+128; b1=b1-b2+128;if (r1>255)r1 = 255;else if (r1<0)r1 = 0;if (g1>255)g1 = 255;else if (g1<0)g1

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論