日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++ GDI 中SelectObject使用方法和注意事项

發布時間:2024/3/26 c/c++ 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++ GDI 中SelectObject使用方法和注意事项 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
CPen* SelectObject( CPen* pPen ); CBrush* SelectObject( CBrush* pBrush ); virtual CFont* SelectObject( CFont* pFont ); CBitmap* SelectObject( CBitmap* pBitmap ); int SelectObject( CRgn* pRgn ); CGdiObject* SelectObject( CGdiObject* pObject ); 函數功能:該函數選擇一對象到指定的設備上下文環境中,該新對象替換先前的相同類型的對象。 函數原型:HGDIOBJ SelectObject(HDC hdc, HGDIOBJ hgdiobj); 參數: hdc:設備上下文環境的句柄。 hgdiobj:被選擇的對象的句柄,該指定對象必須由如下的函數創建。 位圖:CreateBitmap, CreateBitmapIndirect, CreateCompatible Bitmap,?CreateDIBitmap, CreateDIBsection(只有內存設備上下文環境可選擇位圖,并且在同一時刻只能一個設備上下文環境選擇位圖)。 畫刷:CreateBrushIndirect,?CreateDIBPatternBrush,?CreateDIBPatternBrushPt, CreateHatchBrush, CreatePatternBrush, CreateSolidBrush。 字體:CreateFont, CreateFontIndirect。 筆:CreatePen, CreatePenIndirect。 區域:CombineRgn,?CreateEllipticRgn,?CreateEllipticRgnIndirect,?CreatePolygonRgn, CreateRectRgn,?CreateRectRgnIndirect。 返回值:如果選擇對象不是區域并且函數執行成功,那么返回值是被取代的對象的句柄;如果選擇對象是區域并且函數執行成功,返回如下一值; SIMPLEREGION:區域由單個矩形組成;COMPLEXREGION:區域由多個矩形組成。NULLREGION:區域為空。 如果發生錯誤并且選擇對象不是一個區域,那么返回值為NULL,否則返回GDI_ERROR。 注釋:該函數返回先前指定類型的選擇對象,一個應用程序在它使用新對象進行繪制完成之后,應該用原始的缺省的對象替換新對象。 應用程序不能同時選擇一個位圖到多個設備上下文環境中。 ICM:如果被選擇的對象是畫筆或筆,那么就執行顏色管理。 速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;頭文件:wingdi.h;庫文件:gdi32.lib。

<span editable-title"="" data-edit-id="1080552:1080552:2" style="line-height: 1.5; font-size: 12px; float: right; display: block; margin: 10px 0px 0px; color: rgb(51, 102, 204); font-weight: normal;">編輯本段示例

HDC hdc=GetDC(hwnd); HDC memdc=CreateCompatibleDC(hdc); RECT rc; BITMAP bmp; HBITMAP holdbmp,hbmp=LoadBitmap(hInstDVBRes,MAKEINTRESOURCE(IDB_CLOCK));//從資源加載位圖 holdbmp=(HBITMAP)SelectObject(memdc,hbmp);//這里把hbmp的位圖選擇到兼容DC memdc,之后這個兼容DC就擁有和 //hbmp同樣大小的繪圖區域,注意超出位圖返回的GDI輸出都是無效的. GetObject(hbmp,sizeof(BITMAP),&bmp);//這里獲取位圖的大小信息,事實上也是兼容DC繪圖輸出的范圍 SetRect(&rc,0,0,bmp.bmWidth,bmp.bmHeight); DrawText(memdc,"Center Line Text" -1,&rc,DT_VCENTER|DT_SINGLELINE|DT_CENTER);//在兼容DC中間位置輸出字符串 //這樣以來我們就相當于把hbmp這個位圖加上了文字標注,我們可以把這個增加了文字標注的位圖保存起來.一個簡單的圖像處理基本就OK了. SelectObject(memdc,holdbmp);//復原兼容DC數據.

DeleteDC(memdc);

CPen* SelectObject( CPen* pPen ); CBrush* SelectObject( CBrush* pBrush ); virtual CFont* SelectObject( CFont* pFont ); CBitmap* SelectObject( CBitmap* pBitmap ); int SelectObject( CRgn* pRgn ); CGdiObject* SelectObject( CGdiObject* pObject ); Selects an object into the device context. 把以對象選入設備環境 誰是設備環境??? DC? 謝謝啊。

回答

在GDI中,DC(Device context)是一個非常重要的概念。 有的書中,將DC翻譯為設備描述表(《Windows 程序設計 第五版》作者Charles Petzold), 也有的書將DC翻譯為設備上下文。 到底什么是DC? 用現實中的例子來理解可能更容易些。 如果你喜歡畫畫,你得先準備了畫布,畫筆,顏料…… 畫畫的環境搭建好了,你就可以畫畫了。 這個畫畫的環境,就是DC。 在圖形環境下,一切都是畫出來的,所以,你要準備好一個DC,才能在屏幕上畫畫。——寫字也是畫畫。 在畫畫的環境中,有哪些對象呢? 畫布——GDI對象之一:區域 畫筆——GDI對象之一:畫筆 顏料盒——GDI對象之一:調色板 如果要在畫筆上寫字的話,寫什么樣的字體呢?方正字體?徐靜蕾字體?——字體也是GDI對象之一。 有的畫筆比較粗,專用來刷大面積背景色的,這是刷子——GDI對象之一:刷子 如果你不想畫了,只想把別人畫好的畫,貼到你的畫布上,這也是可以的。——GDI對象之一:位圖。 所以,這里就有6種GDI對象可以用于DC。 現在開始畫畫了,你拿起了一只筆。——在Windows環境里,這叫選擇了一個畫筆對象:使用SelectOBject函數。當然,如果你沒帶筆也沒關系,Windows為你準備了幾只畫筆,你可以這樣申請系統提供的缺省畫筆:hPen = GetStockObject(WHITE_PEN); 如果你畫著畫著,覺得手中的筆用著不爽,可以換一只啊,沒關系的。——依舊是SelectObject()換筆。 當然,如果你走出了畫室,別完了把你的畫筆清除掉,要不畫室里全是筆啊,刷子啊,太亂了。——DeleteObject()



總結

以上是生活随笔為你收集整理的c++ GDI 中SelectObject使用方法和注意事项的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。