「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.
しかし、そうはなっていません。設定は次のとおりです。
「背景」は常にバック バッファーにあり、フロント バッファーにフリップされず、「デスクトップ」を更新しない限り、アプリケーションを閉じた後に「デスクトップ」に表示されます。助けてください。