DarkGDK庫學習筆記(肆)

2021-05-27 19:50:35 字數 2024 閱讀 4693

這一篇專門來說說

色鍵技術~~~

沒用過c的圖形處理庫,底層的東西掌握起來比較困難,但用darkgdk處理圖形就相對簡單很多~~~

色鍵技術也稱為色度鍵,作用是使影象中的一些畫素透明~~~

先舉幾個色鍵技術的例項,比如我沒去過火星,但是很想跟學妹吹吹牛,說說火星的樣子,這個時候我可以利用色鍵技術來合成我在火星的**,欺騙一下無知學妹,最後乙個眼睛巨美無比的學妹站了出來,尖叫:學長,你好帥啊~~~之後,很自然地被學長佔便宜,直到她認清學長我的禽獸本質~~~

可以利用windows自帶的畫圖工具或者ps將**的背景擦去,先後填充為單一顏色,之後就可進行合成~~~

ps:帥哥美女不會穿著和幕布顏色一樣的衣服拍廣告,因為後期處理的時候會被透明化~~~    

如果冠希老師能學會這個技術,我想,我們看到的他的作品會更精彩一些~~~

當然,用ps摳圖然後再處理也可以做出相同的效果,但僅限於靜態的~~~

我是菜鳥,因此下面也就簡單的介紹下用色鍵技術處理影象~~~    

先介紹幾個有關函式~~~

44.dbloadimage(string,int)

void型,乙個字串引數,乙個整形引數,第乙個表示影象的檔名(影象和程式不在同一目錄下需要寫影象的路徑名),第二個表示影象的編號,範圍在1~65535之間,作用:載入影象到記憶體,並規定其編號,但並不顯示它~~~

這個函式和dbloadbitmap函式類似,但是要用色鍵技術的話,必須用這個函式來載入影象~~~

這裡突然就不叫點陣圖了,改稱影象,點陣圖和影象是有區別,但先當成乙個概念~~~

45.dbpasteimage(int,int,int,int)

void型,四個整形引數,第乙個表示影象編號,第二個和第三個表示影象的左上角座標,最後乙個為0或者1,0表示影象中沒有畫素被視為透明,1表示影象中具有鍵色的所有畫素都被視為透明,預設鍵色是黑色~~~

46.dbsetimagecolorkey(int,int,int)

void型,三個整形引數,第乙個表示紅色通道值,第二個表示綠色通道值,作用:更改鍵色~~~

tips:dbsetimagecolokey函式必須在dbloadimage函式之前呼叫~~~

47.dbdeleteimage(int)

void型,乙個整形引數,表示影象編號,作用:從記憶體中刪除影象~~~

下面放乙個書上的例子:

#include"darkgdk" //包含標頭檔案,因為沒有用到c++中的庫,因此不需要包含iostream.h之類的標頭檔案

void darkgdk() //相當於c和純c++種的int main()

dbsetimagecolorkey(0,255,0); //更改預設鍵色為綠色

dbloadimage("web.bmp",1);//載入影象1

dbloadimage("spider.bmp",2);//載入影象2

dbpasteimage(1,0,0,0);/*顯示影象1為背景影象,影象左上角在螢幕座標系的(0,0)點,因為背景不需要透明,因此 最後乙個引數為0,表示影象中沒有畫素被視為透明*/

dbpasteimage(2,300,150,1);/*顯示影象2為前景影象,影象的左上角在螢幕座標系的(300,150)點,影象中為綠色(0,255,0)的畫素顯示為透明*/

dbwaitkey();//等待使用者輸入任意鍵結束程式

tips:

*先顯示背景影象再顯示前景影象。

*採用色鍵技術時,影象格式必須為.bmp,用其他格式儲存影象將會使影象失真,影象中每個點的畫素值會改變。

用完影象後刪除是很有必要的,不然會一直占用記憶體,上面的程式沒有刪除影象,說明男人(該書作者性別為雄)都是口是心非的,比如,乙個學長對乙個學妹說,我好想抱著你睡,絕對不做其他事,指不定他剛看完蒼老師的電影呢~~~

因此,同學們用完影象的時候,記得刪除,做個有擔當的好學長,這時候該怎麼和學妹說,也許是:學長剛看完蒼老師的電影,生理需求很迫切~~~

但是往往超前的思想和行為不被人們接受,本質禽獸表現的也禽獸的學長永遠沒有本質禽獸變現的正義的學長受歡迎~~~

色鍵技術,over~~~

DarkGDK庫學習筆記(陸)

陰天了乙個上午,期待一場可以讓我無比順暢的雨 dark gdk程式在顯示輸出時,輸出的內容實際是再視窗內容重新整理後才傳送到螢幕的。預設情況下,dark gdk程式會盡快重新整理黑框框。但是,執行任務繁重的 可能干擾重新整理速度。比如,執行乙個死迴圈的時候,cpu就沒有時間來重新整理螢幕了 下面介紹...

Boost庫學習筆記

timer類 由於精度原因,不適合於精度很高或時間跨度很大的地方。也不能很好的跨平台。呼叫elapsed min 和elapsed max 分別獲取其精度,而且其精度根據平台會有變化。progress timer類繼承與timer類,但是其有乙個析構函式,析構的時候會自動呼叫elapsed 輸出從構...

學習筆記(I O庫)

1 i o操作 裝置i o 記憶體i o 讀寫string 2 cin istream物件,從標準輸入讀取資料 cout ostream物件,向標準輸出寫入資料 cerr ostream,用於輸出程式錯誤資訊,無緩衝區則不可以重定向,寫入到標準錯誤 3 iostream用於讀寫流的基本型別 fstr...