在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()