首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

DirectDraw C# 入門攻略(二):建立 DirectDraw 介面、設定合作層級、Primary/Offscreen Surface

     編輯:關於C語言

建立 DirectDraw 介面

DxVBLib.DirectDraw7 dDraw = dx.DirectDrawCreate("");

GUID 可為空字串,不需特定介面識別碼。

設定合作層級

dDraw.SetCoOperativeLevel(this.Handle.ToInt32(), DxVBLib.CONST_DDSCLFLAGS.DDSCL_NORMAL);

常用旗標:

  • DDSCL_FULLSCREEN 全螢幕
  • DDSCL_ALLOWMODEX 允許 ModeX
  • DDSCL_EXCLUSIVE 獨佔模式

後兩者需搭配 DDSCL_FULLSCREEN,多旗標以 | 組合。

建立 Surface

Surface 為 DirectDraw 顯示/儲存圖像的記憶體/顯存區域。需兩個 Surface:Primary(可見)與 Offscreen(載入圖檔)。

DxVBLib.RECT rect, rectSec;
DxVBLib.DDSURFACEDESC2 dDDesc = new DxVBLib.DDSURFACEDESC2(), dDDesc1 = new DxVBLib.DDSURFACEDESC2();
DxVBLib.DirectDrawSurface7 dDsurface, dDsurfaceSec;

dDDesc.lFlags = DxVBLib.CONST_DDSURFACEDESCFLAGS.DDSD_CAPS;
dDDesc.ddsCaps.lCaps = DxVBLib.CONST_DDSURFACECAPSFLAGS.DDSCAPS_PRIMARYSURFACE;
dDsurface = dDraw.CreateSurface(ref dDDesc); // Primary

dDsurfaceSec = dDraw.CreateSurfaceFromFile("c:\\3.bmp", ref dDDesc1); // Offscreen 從檔案

rect.Top = 0; rect.Left = 0;
rect.Right = dDDesc1.lWidth; rect.Bottom = dDDesc1.lHeight;
dDsurface.BltFast(0, 0, dDsurfaceSec, ref rect, DxVBLib.CONST_DDBLTFASTFLAGS.DDBLTFAST_WAIT);

PrimarySurface 不可直接操作,需透過 Blt/BltFast 從 Offscreen 複製像素。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved