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

正文內(nèi)容

windows是一個(gè)圖形操作系統(tǒng),其所有的圖形可視效果都是通-展示頁(yè)

2024-09-13 14:21本頁(yè)面
  

【正文】 int point) { if(m_bDragging) { CMyDrawDoc *pDoc=GetDocument()。 m_bDragging=TRUE。 // 捕捉鼠標(biāo) ::SetCursor(m_hCross)。point)。dc)。 void CMyDrawView::OnLButtonDown( UINT nFlags, CPoint point) { // TODO: Add your message handler code here . . . CClientDC dc(this)。實(shí)質(zhì)上, OnDraw()函數(shù)由 OnPaint()函數(shù)調(diào)用,在調(diào)用 OnDraw()函數(shù)前, OnPaint()函數(shù)已經(jīng)調(diào)用了函數(shù)OnPrepareDC()對(duì)設(shè)備環(huán)境進(jìn)行了調(diào)整。 Windows鼠標(biāo)位置使用設(shè)備坐標(biāo)系,以客戶區(qū)窗口原點(diǎn)作為基準(zhǔn),而在 OnDraw()函數(shù)中使用邏輯坐標(biāo)。 ? MFC提供了兩個(gè)函數(shù) CDC::DPtoLP()和 CDC:: LPtoDP()用于設(shè)備坐標(biāo)與邏輯坐標(biāo)之間的相互轉(zhuǎn)換。 屏幕坐標(biāo)系、窗口坐標(biāo)系和客戶區(qū)坐標(biāo)系 坐標(biāo)之間的相互轉(zhuǎn)換 ? 編程時(shí),有時(shí)需要根據(jù)當(dāng)前的具體情況進(jìn)行三種設(shè)備坐標(biāo)之間或與邏輯坐標(biāo)的相互轉(zhuǎn)換。 ? 客戶區(qū)坐標(biāo)系以窗口客戶區(qū)左上角為原點(diǎn) , 主要用于客戶區(qū)的繪圖輸出和窗口消息的處理 。彈出式菜單使用的也是屏幕坐標(biāo) 。 ? 設(shè)備坐標(biāo)系分為屏幕坐標(biāo)系 、 窗口坐標(biāo)系和客戶區(qū)坐標(biāo)系三種相互獨(dú)立的坐標(biāo)系 。 ?設(shè)備坐標(biāo)系是面向物理設(shè)備的坐標(biāo)系 , 這種坐標(biāo)以像素或設(shè)備所能表示的最小長(zhǎng)度單位為單位 , X軸方向向右 , Y軸方向向下 。 一般而言 , GDI的文本和圖形輸出函數(shù)使用邏輯坐標(biāo) , 而在客戶區(qū)移動(dòng)或按下鼠標(biāo)的鼠標(biāo)位置是采用設(shè)備坐標(biāo) 。 ? CWindowDC類代表了整個(gè)程序窗口設(shè)備環(huán)境 , 可以在整個(gè)窗口區(qū)域繪圖 。 ? CClientDC類代表了客戶區(qū)設(shè)備環(huán)境 。 ? CPaintDC類是 OnPaint()函數(shù)使用的設(shè)備環(huán)境類 , 它代表一個(gè)窗口的繪圖畫面 。 利用它可以訪問設(shè)備屬性和設(shè)置繪圖屬性 。 ? MFC的 DC類包括 CDC、 CPaintDC、 CClientDC、CWindowDC 和 CMetaFileDC 等 , 其中 CDC 類是MFC設(shè)備環(huán)境類的基類 , 其它的 MFC設(shè)備環(huán)境類都是 CDC的派生類 。 因此 , 在程序中通過聲明一個(gè) MFC設(shè)備環(huán)境類的對(duì)象就自動(dòng)獲取了一個(gè) DC,而當(dāng)該對(duì)象被銷毀時(shí)就自動(dòng)釋放了獲取的 DC。 在其他函數(shù)中通過調(diào)用 API函數(shù) GetDC()獲取設(shè)備環(huán)境 , 調(diào)用 API函數(shù) ReleaseDC()釋放設(shè)備環(huán)境 。 獲取 設(shè)備環(huán)境 DC的方法: ? 在程序中不能直接存取 DC數(shù)據(jù)結(jié)構(gòu) , 只能通過系統(tǒng)提供的一系列函數(shù)或使用設(shè)備環(huán)境的句柄 HDC來間接地獲取或設(shè)置設(shè)備環(huán)境結(jié)構(gòu)中的各項(xiàng)屬性 ,如顯示器高度和寬度 、 支持的顏色數(shù)及分辨率等 。 ? 從根本上來說,設(shè)備環(huán)境 DC是一個(gè) Windows數(shù)據(jù)結(jié)構(gòu),該結(jié)構(gòu)存儲(chǔ)著程序向設(shè)備輸出時(shí)所需要的信息,應(yīng)用程序利用它定義圖形對(duì)象及其屬性,并實(shí)現(xiàn)應(yīng)用程序、設(shè)備驅(qū)動(dòng)程序和輸出設(shè)備之間繪圖命令的轉(zhuǎn)換。 ? 設(shè)備環(huán)境中的“設(shè)備”是指任何類型的顯示器或打印機(jī)等輸出設(shè)備,繪圖時(shí)用戶不用關(guān)心所使用設(shè)備的編程原理和方法。 ? 設(shè)備環(huán)境也稱設(shè)備描述表或設(shè)備上下文,它是由Windows管理的一個(gè)數(shù)據(jù)結(jié)構(gòu),它保存了繪圖操作中一些共同需要設(shè)置的信息,如當(dāng)前的畫筆、畫刷、字體和位圖等圖形對(duì)象及其屬性,以及顏色和背景等影響圖形輸出的繪圖模式。 不同設(shè)備具有不同的驅(qū)動(dòng)程序 , 設(shè)備驅(qū)動(dòng)程序是設(shè)備相關(guān)的 。 概述 Windows繪圖過程和設(shè)備無關(guān)性的實(shí)現(xiàn) : GDI處于設(shè)備驅(qū)動(dòng)程序的上一層 , 當(dāng)程序調(diào)用繪圖函數(shù)時(shí) ,GDI將繪圖命令傳送給當(dāng)前設(shè)備的驅(qū)動(dòng)程序 , 以調(diào)用驅(qū)動(dòng)程序提供的接口函數(shù) 。 ? GDI是形成 Windows核心的三種動(dòng)態(tài)鏈接庫(kù)之一 ,MFC將 GDI函數(shù)封裝在一個(gè)名為 CDC的設(shè)備環(huán)境類中 , 因此我們可以通過調(diào)用 CDC類的成員函數(shù)來完成繪圖操作 。 ? 圖形設(shè)備接口 GDI管理 Windows應(yīng)用程序圖形的繪制 , 在應(yīng)用程序中 , 通過調(diào)用 GDI函數(shù)繪制不同尺寸 、 顏色 、 風(fēng)格的幾何圖形 、 文本和位圖 。 用戶通過調(diào)用 GDI函數(shù)與設(shè)備打交道 , GDI通過不同設(shè)備提供的驅(qū)動(dòng)程序?qū)⒗L圖語(yǔ)句轉(zhuǎn)換為對(duì)應(yīng)的繪圖指令 , 避免了直接對(duì)硬件進(jìn)行操作 , 從而實(shí)現(xiàn)所謂的設(shè)備無關(guān)性 。 本章主要學(xué)習(xí)內(nèi)容: ? 圖形處理的基本原理: – 圖形設(shè)備接口 – 設(shè)備環(huán)境 – GDI坐標(biāo)系 – 映射模式 ? 使用畫筆和畫刷繪制圖形 ? 文本與字體 ? 位圖、圖標(biāo)和光標(biāo) 圖形設(shè)備接口 ? Windows 提供了一個(gè)稱為圖形設(shè)備接口 GDI( Graphics Device Interface) 的抽象接口 。 大多數(shù)應(yīng)用程序都需要在客戶區(qū)繪制一些圖形 , 如繪制文本 、 幾何圖形 、位圖和光標(biāo)等 。 Windows是一個(gè)圖形操作系統(tǒng) , 其所有的圖形可視效果都是通過繪制操作而完成的 。 圖形顯示的實(shí)質(zhì)就是利用 Windows提供的圖形設(shè)備接口將圖形繪制在顯示器上 。 前面幾章已經(jīng)涉及到有關(guān)圖形處理的內(nèi)容 ,只是使用了 Windows系統(tǒng)默認(rèn)的圖形設(shè)備接口和設(shè)備環(huán)境 , 繪制的圖形沒有顏色 、 線型和字體的變化 。 GDI作為 Windows的重要組成部分 , 它負(fù)責(zé)管理用戶繪圖操作時(shí)功能的轉(zhuǎn)換 。 ? 編程時(shí)采用 MFC方法繪制圖形也很方便 , MFC對(duì)GDI函數(shù)和繪圖對(duì)象進(jìn)行了封裝 。這些圖形處理函數(shù)組成了圖形設(shè)備接口 GDI。 ? 所謂設(shè)備無關(guān)性 , 是指操作系統(tǒng)屏蔽了硬件設(shè)備的差異 , 使用戶編程時(shí)一般無需考慮設(shè)備的類型 ,如不同種類的顯示器或打印機(jī) 。 驅(qū)動(dòng)程序的接口函數(shù)將 Windows繪圖命令轉(zhuǎn)化為設(shè)備能夠執(zhí)行的輸出命令 , 實(shí)現(xiàn)圖形的繪制 。 設(shè)備環(huán)境 ? 為了實(shí)現(xiàn)設(shè)備無關(guān)性,應(yīng)用程序的輸出不直接面向顯示器等物理設(shè)備,而是面向一個(gè)稱之為設(shè)備環(huán)境 DC(Device Context)的虛擬邏輯設(shè)備。 ? 形象地說,一個(gè)設(shè)備環(huán)境提供了一張畫布和一些繪畫的工具,我們可以使用不同顏色的工具在上面繪制點(diǎn)、線、圓和文本。所有的繪制操作必須通過設(shè)備環(huán)境進(jìn)行間接的處理, Windows自動(dòng)將設(shè)備環(huán)境所描述的結(jié)構(gòu)映射到相應(yīng)的物理設(shè)備上。 ? 在 Windows中不使用 DC無法進(jìn)行輸出,在使用任何 GDI繪圖函數(shù)之前,必須建立一個(gè)設(shè)備環(huán)境。 ? 如果采用 SDK方法編程 , 獲取 DC的方法有兩種:在 WM_PAINT消息處理函數(shù)中通過調(diào)用 API函數(shù)BeginPaint()獲取設(shè)備環(huán)境 , 在消息處理函數(shù)返回前調(diào)用 API函數(shù) EndPaint()釋放設(shè)備環(huán)境 。 ? 如果采用 MFC方法編程 , MFC提供了不同類型的DC類 , 每一個(gè)類都封裝了 DC句柄 , 并且它們的構(gòu)造函數(shù)自動(dòng)調(diào)用獲取 DC的 API函數(shù) , 析構(gòu)函數(shù)自動(dòng)調(diào)用釋放 DC的 API函數(shù) 。MFC AppWizard應(yīng)用程序向?qū)?chuàng)建的 OnDraw()函數(shù)自動(dòng)支持所獲取的 DC。 ? CDC類既作為其它 MFC設(shè)備環(huán)境類的基類 , 又可以作為一個(gè)一般的設(shè)備環(huán)境類使用 。 CDC類對(duì) GDI的所有繪圖函數(shù)進(jìn)行了封裝 。 如果添加 WM_PAINT消息處理函數(shù) OnPaint(), 就需要使用 CPaintDC類來定義一個(gè)設(shè)備環(huán)境對(duì)象 。 當(dāng)在客戶區(qū)實(shí)時(shí)繪圖時(shí) , 需要利用 CClientDC類定義一個(gè)客戶區(qū)設(shè)備環(huán)境 。 MFC設(shè)備環(huán)境類: GDI坐標(biāo)系和映射模式 ? Windows坐標(biāo)系分為邏輯坐標(biāo)系和設(shè)備坐標(biāo)系兩種 ,GDI支持這兩種坐標(biāo)系 。 ?邏輯坐標(biāo)系是面向 DC的坐標(biāo)系 , 這種坐標(biāo)不考慮具體的設(shè)備類型 , 在繪圖時(shí) , Windows會(huì)根據(jù)當(dāng)前設(shè)置的映射模式將邏輯坐標(biāo)轉(zhuǎn)換為設(shè)備坐標(biāo) 。 設(shè)備坐標(biāo)系的原點(diǎn)位置 (0, 0)不限定在設(shè)備顯示區(qū)域的左上角 。 ? 屏幕坐標(biāo)系以屏幕左上角為原點(diǎn) , 一些與整個(gè)屏幕有關(guān)的函數(shù)均采用屏幕坐標(biāo) , 如 GetCursorPos()、SetCursorPos()、 CreateWindow()、 MoveWindow()。 ? 窗口坐標(biāo)系以窗口左上角為坐標(biāo)原點(diǎn) , 它包括窗口標(biāo)題欄 、 菜單欄和工具欄等范圍 。 鼠標(biāo)消息的坐標(biāo)參數(shù)使用客戶區(qū)坐標(biāo) , CDC類繪圖成員函數(shù)使用與客戶區(qū)坐標(biāo)對(duì)應(yīng)的邏輯坐標(biāo) 。 ? MFC提供了兩個(gè)函數(shù) CWnd::ScreenToClient()和CWnd::ClientToScreen()用于屏幕坐標(biāo)與客戶區(qū)坐標(biāo)的相互轉(zhuǎn)換。 例 修改例 513中的程序 MyDraw, 采用將設(shè)備坐標(biāo)轉(zhuǎn)換為邏輯坐標(biāo)的方法實(shí)現(xiàn)滾動(dòng)視圖的功能。因此,為了在滾動(dòng)視圖中重繪圖形,必須在存儲(chǔ)線段起點(diǎn)和終點(diǎn)之前將其坐標(biāo)轉(zhuǎn)換為邏輯坐標(biāo)。 打開應(yīng)用程序項(xiàng)目 MyDraw, 修改單擊鼠標(biāo)和鼠標(biāo)移動(dòng)的消息處理函數(shù)。 OnPrepareDC(amp。 // 調(diào)整設(shè)備環(huán)境的屬性 (amp。 // 將設(shè)備坐標(biāo)轉(zhuǎn)換為邏輯坐標(biāo) SetCapture()。 // 設(shè)置十字光標(biāo) m_ptOrigin=point。 // 設(shè)置拖拽標(biāo)記 // CScrollView::OnLButtonDown(nFlags, point)。 ASSERT_VALID(pDoc)。 OnPrepareDC(amp。 (amp。 pDocAddLine(m_ptOrigin, point)。 (point)。 } // CScrollView::OnMouseMove(nFlags, point)。此外,對(duì)于某些映射模式,用戶還可以自定義窗口的長(zhǎng)度和寬度,設(shè)置視圖區(qū)的物理范圍。 映射模式 邏輯單位 坐標(biāo)系設(shè)定 MM_TEXT 一個(gè)像素 X軸正方向朝右 , Y軸正方向朝下 MM_LOMETRIC X軸正方向朝右 , Y軸正方向朝上 MM_HIMETRIC X軸正方向朝右 , Y軸正方向朝上 MM_LOENGLISH X軸正方向朝右 , Y軸正方向朝上 MM_HIENGLISH X軸正方向朝右 , Y軸正方向朝上 MM_TWIPS 1/1440英寸 X軸正方向朝右 , Y軸正方向朝上 MM_ISOTROPIC 系統(tǒng)確定 X、 Y軸可任意調(diào)節(jié) , X、 Y軸比例為 1:1 MM_ANISOTROPIC 系統(tǒng)確定 X、 Y軸可任意調(diào)節(jié) , X、 Y軸比例任意 Windows映射模式 設(shè)置原點(diǎn)的坐標(biāo): ? 通過調(diào)用函數(shù) CDC::SetWindowOrg()設(shè)置設(shè)備環(huán)境的窗口原點(diǎn)的坐標(biāo),調(diào)用 CDC::SetViewportOrg()重新設(shè)置設(shè)備的視口原點(diǎn)的坐標(biāo)。 ? 窗口原點(diǎn)是指邏輯窗口坐標(biāo)系的原點(diǎn)在視口(設(shè)備)坐標(biāo)系中的位置,視口原點(diǎn)是指設(shè)備實(shí)際輸出區(qū)域的原點(diǎn)。一個(gè)點(diǎn)的邏輯坐標(biāo)按照如下式子轉(zhuǎn)換為設(shè)備坐標(biāo): 設(shè)備(視口)坐標(biāo) = 邏輯坐標(biāo) – 窗口原點(diǎn)坐標(biāo) + 視口原點(diǎn)坐標(biāo) 例 分別在 OnDraw()函數(shù)中添加如下代碼,設(shè)置不同的窗口原點(diǎn)和視口原點(diǎn),結(jié)果有什么不同。 pDCRectangle(CRect(50, 50, 100, 100))。 pDCSetWindowOrg(50, 50)。 ( 3) pDCSetMapMode(MM_TEXT)。 pDCRectangle(CRect(50, 50, 100, 100))。
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1