• Delphi 与 DirectX 之 DelphiX(14): TPictureCollectionItem.DrawRotate...



    TPictureCollectionItem.DrawRotate(); 的同类函数还有:
    TPictureCollectionItem.DrawRotateAdd();
    TPictureCollectionItem.DrawRotateSub();
    TPictureCollectionItem.DrawRotateAlpha();
    TPictureCollectionItem.DrawRotateAddCol();
    TPictureCollectionItem.DrawRotateSubCol();
    TPictureCollectionItem.DrawRotateAlphaCol();
    

    本例分别进行了演示, 运行效果图:



    代码文件:
    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;
        Button3: TButton;
        Button4: TButton;
        Button5: TButton;
        Button6: TButton;
        Button7: TButton;
        procedure FormCreate(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure Button4Click(Sender: TObject);
        procedure Button5Click(Sender: TObject);
        procedure Button6Click(Sender: TObject);
        procedure Button7Click(Sender: TObject);
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    const
      Angle = 32; {在这里相当于 45° 角}
      clr = $777777;
    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);
    
      Button1.Caption := 'DrawRotateAdd';
      Button2.Caption := 'DrawRotateSub';
      Button3.Caption := 'DrawRotateAlpha';
      Button4.Caption := 'DrawRotateAddCol';
      Button5.Caption := 'DrawRotateSubCol';
      Button6.Caption := 'DrawRotateAlphaCol';
      Button7.Caption := '原始效果';
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      DXDraw1.Surface.Fill(clr);
      PicItem.DrawRotateAdd(DXDraw1.Surface,
                         DXDraw1.Width div 2, DXDraw1.Height div 2,
                         PicItem.Width, PicItem.Height,
                         0,
                         0.5, 0.5,
                         Angle);
      DXDraw1.Flip;
    end;
    
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      DXDraw1.Surface.Fill(clr);
      PicItem.DrawRotateSub(DXDraw1.Surface,
                         DXDraw1.Width div 2, DXDraw1.Height div 2,
                         PicItem.Width, PicItem.Height,
                         0,
                         0.5, 0.5,
                         Angle);
      DXDraw1.Flip;
    end;
    
    procedure TForm1.Button3Click(Sender: TObject);
    begin
      DXDraw1.Surface.Fill(clr);
      PicItem.DrawRotateAlpha(DXDraw1.Surface,
                         DXDraw1.Width div 2, DXDraw1.Height div 2,
                         PicItem.Width, PicItem.Height,
                         0,
                         0.5, 0.5,
                         Angle,
                         128);
      DXDraw1.Flip;
    end;
    
    procedure TForm1.Button4Click(Sender: TObject);
    begin
      DXDraw1.Surface.Fill(clr);
      PicItem.DrawRotateAddCol(DXDraw1.Surface,
                         DXDraw1.Width div 2, DXDraw1.Height div 2,
                         PicItem.Width, PicItem.Height,
                         0,
                         0.5, 0.5,
                         Angle,
                         clYellow);
      DXDraw1.Flip;
    end;
    
    procedure TForm1.Button5Click(Sender: TObject);
    begin
      DXDraw1.Surface.Fill(clr);
      PicItem.DrawRotateSubCol(DXDraw1.Surface,
                         DXDraw1.Width div 2, DXDraw1.Height div 2,
                         PicItem.Width, PicItem.Height,
                         0,
                         0.5, 0.5,
                         Angle,
                         clYellow);
      DXDraw1.Flip;
    end;
    
    procedure TForm1.Button6Click(Sender: TObject);
    begin
      DXDraw1.Surface.Fill(clr);
      PicItem.DrawRotateAlphaCol(DXDraw1.Surface,
                         DXDraw1.Width div 2, DXDraw1.Height div 2,
                         PicItem.Width, PicItem.Height,
                         0,
                         0.5, 0.5,
                         Angle,
                         clYellow);
      DXDraw1.Flip;
    end;
    
    procedure TForm1.Button7Click(Sender: TObject);
    begin
      DXDraw1.Surface.Fill(clr);
      PicItem.DrawRotate(DXDraw1.Surface,
                         DXDraw1.Width div 2, DXDraw1.Height div 2,
                         PicItem.Width, PicItem.Height,
                         0,
                         0.5, 0.5,
                         Angle);
      DXDraw1.Flip;
    end;
    
    end.
    

    窗体文件:
    object Form1: TForm1
      Left = 0
      Top = 0
      Caption = 'Form1'
      ClientHeight = 226
      ClientWidth = 356
      Color = clBtnFace
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -11
      Font.Name = 'Tahoma'
      Font.Style = []
      OldCreateOrder = False
      OnCreate = FormCreate
      PixelsPerInch = 96
      TextHeight = 13
      object DXDraw1: TDXDraw
        Left = 8
        Top = 8
        Width = 225
        Height = 211
        AutoInitialize = True
        AutoSize = True
        Color = clBlack
        Display.FixedBitCount = False
        Display.FixedRatio = True
        Display.FixedSize = True
        Options = [doAllowReboot, doWaitVBlank, doCenter, do3D, doDirectX7Mode, doHardware, doSelectDriver]
        SurfaceHeight = 211
        SurfaceWidth = 225
        TabOrder = 0
        Traces = <>
      end
      object Button1: TButton
        Left = 239
        Top = 8
        Width = 112
        Height = 25
        Caption = 'Button1'
        TabOrder = 1
        OnClick = Button1Click
      end
      object Button2: TButton
        Left = 239
        Top = 39
        Width = 112
        Height = 25
        Caption = 'Button2'
        TabOrder = 2
        OnClick = Button2Click
      end
      object Button3: TButton
        Left = 239
        Top = 70
        Width = 112
        Height = 25
        Caption = 'Button3'
        TabOrder = 3
        OnClick = Button3Click
      end
      object Button4: TButton
        Left = 239
        Top = 101
        Width = 112
        Height = 25
        Caption = 'Button4'
        TabOrder = 4
        OnClick = Button4Click
      end
      object Button5: TButton
        Left = 239
        Top = 132
        Width = 112
        Height = 25
        Caption = 'Button5'
        TabOrder = 5
        OnClick = Button5Click
      end
      object Button6: TButton
        Left = 239
        Top = 163
        Width = 112
        Height = 25
        Caption = 'Button6'
        TabOrder = 6
        OnClick = Button6Click
      end
      object Button7: TButton
        Left = 239
        Top = 194
        Width = 112
        Height = 25
        Caption = 'Button7'
        TabOrder = 7
        OnClick = Button7Click
      end
      object DXImageList1: TDXImageList
        Items.ColorTable = {
          0000000000000000000000000000000000000000000000000000000000000000
          0000000000000000000000000000000000000000000000000000000000000000
          0000000000000000000000000000000000000000000000000000000000000000
          0000000000000000000000000000000000000000000000000000000000000000
          0000000000000000000000000000000000000000000000000000000000000000
          0000000000000000000000000000000000000000000000000000000000000000
          0000000000000000000000000000000000000000000000000000000000000000
          0000000000000000000000000000000000000000000000000000000000000000
          0000000000000000000000000000000000000000000000000000000000000000
          0000000000000000000000000000000000000000000000000000000000000000
          0000000000000000000000000000000000000000000000000000000000000000
          0000000000000000000000000000000000000000000000000000000000000000
          0000000000000000000000000000000000000000000000000000000000000000
          0000000000000000000000000000000000000000000000000000000000000000
          0000000000000000000000000000000000000000000000000000000000000000
          0000000000000000000000000000000000000000000000000000000000000000
          0000000000000000000000000000000000000000000000000000000000000000
          0000000000000000000000000000000000000000000000000000000000000000
          0000000000000000000000000000000000000000000000000000000000000000
          0000000000000000000000000000000000000000000000000000000000000000
          0000000000000000000000000000000000000000000000000000000000000000
          0000000000000000000000000000000000000000000000000000000000000000
          0000000000000000000000000000000000000000000000000000000000000000
          0000000000000000000000000000000000000000000000000000000000000000
          0000000000000000000000000000000000000000000000000000000000000000
          0000000000000000000000000000000000000000000000000000000000000000
          0000000000000000000000000000000000000000000000000000000000000000
          0000000000000000000000000000000000000000000000000000000000000000
          0000000000000000000000000000000000000000000000000000000000000000
          0000000000000000000000000000000000000000000000000000000000000000
          0000000000000000000000000000000000000000000000000000000000000000
          0000000000000000000000000000000000000000000000000000000000000000}
        Items = <>
        Left = 192
        Top = 16
      end
    end
    
  • 相关阅读:
    一个比喻理解进程和线程的区别
    python蛋疼的编码decode、encode、unicode、str、byte的问题都在这了
    python类中__unicode__和__str__方法的妙用
    python re 正则提取中文
    一个python爬虫协程的写法(gevent模块)
    python 中range和xrange的区别
    python 监控oracle 数据库
    Spring security 知识笔记【自定义登录页面】
    Spring security 知识笔记【内存角色授权】
    Spring security 知识笔记【入门】
  • 原文地址:https://www.cnblogs.com/del/p/1375201.html
Copyright © 2020-2023  润新知