zoukankan      html  css  js  c++  java
  • Delphi 与 DirectX 之 DelphiX(18): TDXDraw 中描绘图片的命令


    前面的绘图命令都是来自 TDXImageList,
    准确地说是来自 TDXImageList.Items 所包含的 TPictureCollectionItem 对象.

    那 TDXDraw 本身有没有绘图命令呢?
    TDXDraw 本身没有绘图命令, 但它的有绘图表面(TDirectDrawSurface), 譬如: Surface、Primary;
    TDXDraw 的绘图表面有更多的绘图命令, 另外 TDXDraw 可以多个绘图表面.

    TDirectDrawSurface 的绘图命令和 TPictureCollectionItem 的绘图命令最大的区别是它们的图像来源;
    TDirectDrawSurface 的图像来源必须是另一个已绘制好的 TDirectDrawSurface 对象.

    这里列举的只是 TDirectDrawSurface 和 TPictureCollectionItem 类似的描绘图片的命令:
    TDirectDrawSurface.Draw(); TDirectDrawSurface.StretchDraw(); TDirectDrawSurface.DrawAdd(); TDirectDrawSurface.DrawAlpha(); TDirectDrawSurface.DrawSub(); TDirectDrawSurface.DrawAddCol(); TDirectDrawSurface.DrawAlphaCol(); TDirectDrawSurface.DrawSubCol(); TDirectDrawSurface.DrawRotate(); TDirectDrawSurface.DrawRotateAdd(); TDirectDrawSurface.DrawRotateAdd(); TDirectDrawSurface.DrawRotateAlpha(); TDirectDrawSurface.DrawRotateSub(); TDirectDrawSurface.DrawRotateAddCol(); TDirectDrawSurface.DrawRotateAlphaCol(); TDirectDrawSurface.DrawRotateCol(); TDirectDrawSurface.DrawRotateSubCol(); TDirectDrawSurface.DrawWaveX(); TDirectDrawSurface.DrawWaveXAdd(); TDirectDrawSurface.DrawWaveXAlpha(); TDirectDrawSurface.DrawWaveXSub(); TDirectDrawSurface.DrawWaveY(); TDirectDrawSurface.DrawWaveYAdd(); TDirectDrawSurface.DrawWaveYAlpha(); TDirectDrawSurface.DrawWaveYSub();

    本例效果图:



    代码文件:
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, DXDraws, StdCtrls;
    
    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}
    
    var
      PicItem: TPictureCollectionItem;
    
    procedure TForm1.FormCreate(Sender: TObject);
    const
      ImgPath1 = 'C:\Temp\DelphiX.bmp';
    begin
      DXImageList1.DXDraw := DXDraw1;
      PicItem := TPictureCollectionItem(DXImageList1.Items.Add);
      PicItem.Picture.LoadFromFile(ImgPath1);
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    var
      MySurface: TDirectDrawSurface;
    begin
      MySurface := TDirectDrawSurface.Create(DXDraw1.DDraw);
      PicItem.Restore; {Surface.Draw 的矩形范围好像能直接作用到列表中的图片, 需要恢复一下}
      MySurface.SetSize(PicItem.Width, PicItem.Height);
      MySurface.Fill(0);
      PicItem.Draw(MySurface, 0, 0, 0);
    
      DXDraw1.Surface.Fill(0);
      DXDraw1.Surface.Draw((DXDraw1.Width - MySurface.Width) div 2,
                           (DXDraw1.Height - MySurface.Height) div 2,
                           MySurface);
      DXDraw1.Flip;
      FreeAndNil(MySurface);
    end;
    
    procedure TForm1.Button2Click(Sender: TObject);
    var
      MySurface: TDirectDrawSurface;
      m,n: Integer;
    begin
      m := 40; n := 15;
      MySurface := TDirectDrawSurface.Create(DXDraw1.DDraw);
      PicItem.Restore; {Surface.Draw 的矩形范围好像能直接作用到列表中的图片, 需要恢复一下}
      MySurface.SetSize(PicItem.Width, PicItem.Height);
      MySurface.Fill(0);
      PicItem.Draw(MySurface, 0, 0, 0);
    
      DXDraw1.Surface.Fill(0);
      DXDraw1.Surface.Draw((DXDraw1.Width - MySurface.Width) div 2 + m,
                           (DXDraw1.Height - MySurface.Height) div 2 + n,
                           Bounds(m, n, MySurface.Width - m*2, MySurface.Height - n*2),
                           MySurface);
      DXDraw1.Flip;
      FreeAndNil(MySurface);
    end;
    
    end.
    

  • 相关阅读:
    洛谷 P1486 [NOI2004] 郁闷的出纳员(Splay)
    计算器网络(一)发展史以及OSI参考模型
    计算机网络(三) TCP协议详解
    计算机网络(二) TCP/IP协议群介绍
    排序算法Java实现
    springboot项目部署之启动java项目脚本start.sh
    Springboot项目部署之文件上传报错413 Request Entity Too Large错误
    springboot项目部署之停止关闭项目脚本shutdown.sh
    聊聊Java中面向对象的this指针以及static修饰符
    Java面向对象之代码块、Package、Import
  • 原文地址:https://www.cnblogs.com/del/p/1375723.html
Copyright © 2011-2022 走看看