zoukankan      html  css  js  c++  java
  • Delphi 与 DirectX 之 DelphiX(5): 初识 TDXImageList


    新建工程后, 在窗体上分别添加: DXDraw1、DXImageList1;

    然后只需要下面四行代码即可在 DXDraw1 中显示 DelphiX.dxg 图像:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      DXImageList1.Items.LoadFromFile('C:\Temp\DelphiX.dxg');
      DXImageList1.DXDraw := DXDraw1;
      DXImageList1.Items[0].Draw(DXDraw1.Surface, 10, 10, 0);
      DXDraw1.Flip;
    end;
    

    你如果没有 dxg 格式的图像, 就下载本例用到的图像吧(下载后解压到 C:\Temp\):
    https://files.cnblogs.com/del/DelphiX_img.rar

    DXImageList1 是一个图像列表, 本来用 LoadFromFile 添加很方便, 但现在这个命令很不好用;
    不过没关系, 还有其他办法建立图像列表:
    1、设计时双击 DXImageList1 图标...这种方法也不好, 目前只支持 dxg 和部分 bmp(dib我没试);
    2、从 DXImageList1 双击其 items 属性...这种方法好, 支持很多种格式;
    3、TDXImageList 总归还是 VCL 控件吗, 它可以和其他 VCL 交互; 只要其他控件能加载的图片它都可以拿来用.

    下面的例子是用第二种办法添加了两个图片, 运行效果图:



    代码文件:
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, DXDraws, DXClass;
    
    type
      TForm1 = class(TForm)
        DXDraw1: TDXDraw;
        DXImageList1: TDXImageList;
        Button1: TButton;
        Button2: TButton;
        procedure FormCreate(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    {把 DXImageList1 的 DXDraw 属性指定为 DXDraw1}
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      DXImageList1.DXDraw := DXDraw1; {这一步容易忽视; 也可以在设计时指定}
    end;
    
    {显示列表中的第一个图像}
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      {Draw 函数的参数 1 是绘图表面}
      {参数 2、3 是坐标}
      {参数 4 用来指定使用第几个调色板, 现在默认只有一个调色板, 只能是 0}
      DXImageList1.Items[0].Draw(DXDraw1.Surface, 10, 10, 0);
      DXDraw1.Flip;
    end;
    
    {显示列表中的第二个图像}
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      DXImageList1.Items[1].Draw(DXDraw1.Surface, 10, 10, 0);
      DXDraw1.Flip;
    end;
    
    end.
    

  • 相关阅读:
    GPU CUDA之——深入理解threadIdx
    需求分析、业务逻辑与数据结构
    软件建模的本质
    浅谈软件需求建模
    软件建模即程序设计
    软件开发从0到1与软件建模
    数据模型所描述的内容包括三个部分:数据结构、数据操作、数据约束。
    观察力与信息搜集能力
    人类为什么写书
    鲁宾斯坦说:"思维是在概括中完成的。"
  • 原文地址:https://www.cnblogs.com/del/p/1374513.html
Copyright © 2011-2022 走看看