1

「DXDraw01」、「DXDIB01」、「DXDIB02」、「Background」、「BitBtn01」、「BitBtn02」、「DXTimer01」を使用する Delphi DirectX プロジェクトを 1 つ持っています。私の要件は、「Background」に保存されているイメージが表示されることです。 DelphiX チュートリアルに従って、次のコードを実装しました。

unit KoushikHalder01;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
  Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Buttons, Winapi.DirectDraw,
  DXClass, DXDraws, DIB, Math, Menus;

type
  TForm01 = class(TDXForm)
    DXDraw01: TDXDraw;
    DXDIB01: TDXDIB;
    DXDIB02: TDXDIB;
    Background: TDXDIB;
    BitBtn01: TBitBtn;
    BitBtn02: TBitBtn;
    DXTimer01: TDXTimer;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure DXTimer01Timer(Sender: TObject; LagCount: Integer);
    procedure FormDestroy(Sender: TObject);
    procedure DXDraw01Finalize(Sender: TObject);
    procedure DXDraw01Initialize(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form01: TForm01;
  Closing: Boolean;

implementation

{$R *.dfm}

procedure TForm01.DXDraw01Finalize(Sender: TObject);
begin
  DXTimer01.Enabled := false;
end;

procedure TForm01.DXDraw01Initialize(Sender: TObject);
begin
  DXTimer01.Enabled := true;
end;

procedure TForm01.DXTimer01Timer(Sender: TObject; LagCount: Integer);
begin
  if not DXDraw01.CanDraw then exit;

  DXDraw01.Surface.Fill(0);

  with DXDraw01.Surface.Canvas do
  begin
  DXDraw01.Surface.Assign(Background.DIB);
    Brush.Style := bsClear;
    Font.Color := clWhite;
    Font.Size := 30;
    Textout(130, 30, DateTimeToStr(Now));
    Release; {  Indispensability  }
  end;
  DXDraw01.Flip;
  Application.ProcessMessages;
end;

procedure TForm01.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Closing := True;
end;

procedure TForm01.FormCreate(Sender: TObject);
 begin
  DXTimer01.Enabled := true;
end;

procedure TForm01.FormDestroy(Sender: TObject);
begin
  DXDIB01.Free;
  DXDIB02.Free;
  DXDraw01.Free;
  Background.Free;
end;

end.

しかし、そうはなっていません。設定は次のとおりです。 DXドロー設定 DXタイマー設定

「背景」は常にバック バッファーにあり、フロント バッファーにフリップされず、「デスクトップ」を更新しない限り、アプリケーションを閉じた後に「デスクトップ」に表示されます。助けてください。

4

0 に答える 0