文章目录
传奇窗口化
- 去掉 DX全屏占用模式
procedure TfrmMain.FormCreate(Sender: TObject); 里的
if g_boFullScreen then DXDraw.Options:=DXDraw.Options + [doFullScreen]; //注释掉 这样改后会颜色丢失 只要加个 g_boUseDIBSurface := TRUE; 就可以不让颜色丢失!!
2.为什么图片只在屏幕的0,0显示 。
因为 DxDraw.Primary.Draw (0, 0, DxDraw.Surface.ClientRect, DxDraw.Surface, FALSE); 这条函数引起的。
只要把这条函数改 成 DXDraw.Flip 就OK了
procedure TMainForm.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
{如果按了Esc,则退出}
if Key=VK_ESCAPE then
Close;
{全屏模式和窗口模式的切换}
if (ssAlt in Shift) and (Key=VK_RETURN) then
begin
DXDraw.Finalize;
if doFullScreen in DXDraw.Options then begin RestoreWindow; DXDraw.Cursor := crNone; BorderStyle := bsSizeable; DXDraw.Options := DXDraw.Options - [doFullScreen]; end else begin StoreWindow; DXDraw.Cursor := crNone; BorderStyle := bsNone; DXDraw.Options := DXDraw.Options + [doFullScreen]; end; DXDraw.Initialize; end;
end;
//WNpcImg.Initialize;
WEffectImg.Initialize;
//ImageList.Items.MakeColorTable;
// DXDraw.ColorTable := ImageList.Items.ColorTable;
DXDraw.DefColorTable := g_WMainImages.MainPalette;
//DXDraw.DefColorTable := ImageList.Items.ColorTable;
DXDraw.ColorTable := DXDraw.DefColorTable;
// DXDraw.UpdatePalette;
DXDraw.UpdatePalette;
//MainSurface := TDirectDrawSurface.Create (frmMain.DxDraw.DDraw);
//MainSurface.SystemMemory := TRUE;
//MainSurface.SetSize (SCREENWIDTH, SCREENHEIGHT);
BackSprite:=TBackgroundSprite.Create(DXSpriteEngine.Engine);
with TBackgroundSprite(BackSprite) do