关闭

使用DelphiX显示图片并把图片作为背景

919人阅读 评论(0) 收藏 举报

本代码是给予DelphiX的,各位朋友可以去www.2ccc.com上下载

步骤:

(1)在新建立的工程的主窗体上放置以下空间:DXImageList, DXDraw, DXSpriteEngine, DXTimer

(2)设置要显示的图片:DXImageList  ->  Items -> 新建一个 TPictureCollectionItem 命名为 BackGroundPicture -> 选择该项的 Picture 属性 -> 选择图片(BMP格式的);

以下是代码:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DXClass, DXDraws, DXInput, DXSprite, ExtCtrls;

type
  TForm1 = class(TDXForm)
    pnlPlan: TPanel;
    DXDraw1: TDXDraw;
    DXSpriteEngine1: TDXSpriteEngine;
    DXTimer1: TDXTimer;
    DXImageList1: TDXImageList;
    procedure DXDraw1Initialize(Sender: TObject);
    procedure DXDraw1Finalize(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure DXTimer1Timer(Sender: TObject; LagCount: Integer);
  private
    { Private declarations }
    procedure DrawBackGroundPicture;
  public
    { Public declarations }
    BackGroundSprite: TBackGroundSprite; {游戏的背景图}
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.DXDraw1Initialize(Sender: TObject);
begin
  DXTimer1.Enabled := True;
end;

procedure TForm1.DXDraw1Finalize(Sender: TObject);
begin
  DXTimer1.Enabled := False;
end;

procedure TForm1.DrawBackGroundPicture;
begin
  DXImageList1.Items.MakeColorTable;
  //更新系统调色板
  DXDraw1.ColorTable := DXImageList1.Items.ColorTable;
  DXDraw1.DefColorTable := DXImageList1.Items.ColorTable;
  DXDraw1.UpdatePalette;
  //设置要显示的并要作为背景的图片
  BackGroundSprite := TBackGroundSprite.Create(DXSpriteEngine1.Engine);
  with TBackGroundSprite(BackGroundSprite) do
  begin
    SetMapSize(1, 1);
    Image := DXImageList1.Items.Find('BackGroundPicture');
    //图片层次
    Z := -2;
    //平铺
    Tile := True;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  DrawBackGroundPicture;
end;

procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
begin
  if not DXDraw1.CanDraw then exit;
  //以下为绘制背景图片
  LagCount := 1000 div 60;
  DXSpriteEngine1.Move(LagCount);
  DXSpriteEngine1.Dead;
  DXDraw1.Surface.Fill(0);
  DXSpriteEngine1.Draw;
  DXDraw1.Flip;
end;

end. 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:215608次
    • 积分:2680
    • 等级:
    • 排名:第13501名
    • 原创:26篇
    • 转载:132篇
    • 译文:0篇
    • 评论:32条
    最新评论