blt函式是位塊傳輸的意思,一般用作從乙個頁面拷貝到另外乙個頁面。還有的用法就是使用單色填充頁面。 只要將ddbltfx的 fillcolor使其有效。
使用這個函式的時候注意三點:
使用函式前,最好要將頁面初始化。假設你編寫乙個動畫程式的時候,如果你不在每次的blt之前將頁面初始化,你的動畫角色,將在頁面上一直存在,就是要擦出動畫的前一步的blt。
使用這個函式時一定不能在lock與unlock 之間 呼叫,否則報錯。返回值資訊是 dderr_su***cebusy ,意味著呼叫blt的函式的頁面,已經被鎖定。 只有在解鎖之後,才能呼叫該函式。
lpdirectdrawsu***ce7 lpddbitmap;
if(!createbitmapsu***ce(&lpddbitmap,"monster.bmp",640,480))
ddcolorkey srcckey;
srcckey.dwcolorspacehighvalue=0;
srcckey.dwcolorspacelowvalue=0;
lpddbitmap->setcolorkey(ddckey_srcblt,&srcckey);
rect src_rect[6]=,,,
,,};static int num_rect=0,num_speed=0;
rect dest_rect;
dest_rect.left=num_speed*30;
dest_rect.top=0;
dest_rect.right=dest_rect.left+200;
dest_rect.bottom=400;
if (dest_rect.left >= screen_width)
hresult h=lpddbuffer->blt(&dest_rect,lpddbitmap,&src_rect[num_rect],ddblt_wait | ddblt_keysrc,null);
if(failed(h))
while(failed(lpddprimary->flip(0,ddflip_wait)));
// 上面的**就是裝載位**件,將位圖blt到後備緩衝,然後在呼叫flip() 函式實現換頁。
當你沒有指定關鍵色 (color- key)的時候不能在blt的函式第四個引數中指定ddblt_keysrc |或者ddblt_keydest 標誌, 否則函式呼叫會返回錯誤資訊 dderr_invalidparams.
當你傳給blt函式的源矩形,目標矩形不正確的情況下,也回返回。dderr_invalidparams。 假設你的矩形left與 right交叉了。就會出現這種錯誤。
blt函式呼叫, 記住不能在lock與 unlock之間呼叫。 引數資訊一定仔細檢查是不是正確的。
首次接觸DirectDraw
directdraw 1.directdraw可能是directx中最重要的技術,因為它溝通了2d圖形的顯示和direct3d所依賴的真緩衝層。只要掌握了directdraw,就能夠編寫各種在dos16 32下編寫的圖形應用程式。directdraw是理解directx中許多概念的關鍵,所以要特別注...
從頭學習DirectDraw
在開始學習directdraw程式設計之前,有一些題外話要說明,以下內容均是個人的心得和體會,如果其中有什麼謬誤之處,敬請諒解,同時個人不對可能造成的後果負責。以下幾點是在編制directx應用程式時應該注意的 directdraw是什麼?讓我們從訊息迴圈開始 directx最初是為遊戲開發而推出的...
DirectX 之 DirectDraw 視窗模式
在視窗模式下使用 directdraw 最大的痛苦是不能使用換頁操作 flip 但是有許多人還是喜歡在視窗模式下進行遊戲.首先,視窗模式下建立乙個 idirectdraw 介面物件和全屏模式下是一樣的,不同的是,在選擇協作模式和不能改變螢幕解析度.當然你堅決要改變,一定要有禮貌的改變.設定協作級別,...