MFC 中DC的解釋

2021-06-14 13:43:18 字數 861 閱讀 1291

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

MFC 雙緩衝技術和相容DC

一 繪圖時螢幕閃爍的原因分析 螢幕閃爍的根本原因是相鄰兩幀影象之間存在的巨大差異造成的,而windows的圖形重新整理方式使得任何兩幀影象之間都存在著巨大的差異。因為windows在進行重新整理之前都會首先將整個螢幕刷成白色,就相當於在電影膠片的相鄰兩幀之間都插入了乙個白色的幀,這也就是為什麼螢幕閃...

MFC控制項第一講 DC程式設計

什麼是dc,dc有什麼用.dc成為裝置描述符表.dc的作用就是可以進行繪製.比如我們的視窗都是繪製出來的.dc可以簡單理解為.沒乙個視窗程式都有一塊記憶體用於繪製.我們只需要獲取這塊記憶體即可.mfc 中 的cdc類 就是封裝了hdc 跟gdi函式.並且派生出了四個不同場景下的類.注意hdc 則是w...

DC釋放的問題

以前編寫gdi程式的時候沒有怎麼注意這一塊,dc隨便使用,也沒有什麼大問題,現在發現這樣做問題很大,首先就是記憶體洩露 乙個dc就相當於乙個畫家,但是他沒有畫筆 顏料 畫布就不能作畫,在gdi就類似於pen brush bitmap等等,乙個dc的建立要涉及到畫畫的各個方面,因而它是一塊很大的記憶體...