DxVBLib.DirectDraw7 dDraw = dx.DirectDrawCreate("");
GUID 可為空字串,不需特定介面識別碼。
dDraw.SetCoOperativeLevel(this.Handle.ToInt32(), DxVBLib.CONST_DDSCLFLAGS.DDSCL_NORMAL);
常用旗標:
DDSCL_FULLSCREEN 全螢幕DDSCL_ALLOWMODEX 允許 ModeXDDSCL_EXCLUSIVE 獨佔模式後兩者需搭配 DDSCL_FULLSCREEN,多旗標以 | 組合。
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 複製像素。