zoukankan      html  css  js  c++  java
  • Delphi 与 DirectX 之 DelphiX(20): TDirectDrawSurface.FillRect...


    TDirectDrawSurface.Fill();
    TDirectDrawSurface.FillRect();
    TDirectDrawSurface.FillRectAlpha();
    TDirectDrawSurface.FillRectAdd();
    TDirectDrawSurface.FillRectSub();
    
    其中 Fill 在前面每个例子中都有用到; 另外注意: 这几个函数中的颜色格式有点乱:
    Fill 与 FillRect 使用的是非 Delphi 的颜色格式, 它们使用的红色应该是: $FF0000;
    FillRectAlpha、FillRectAdd、FillRectSub 可以使用 Delphi 的颜色, 红色可以是: $0000FF 或 clRed.
    

    本例效果图:



    代码文件:
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, DXDraws, StdCtrls;
    
    type
      TForm1 = class(TForm)
        DXDraw1: TDXDraw;
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        Button4: TButton;
        Button5: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure Button4Click(Sender: TObject);
        procedure Button5Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    const
      ImgPath1 = 'C:\Temp\Test.jpg';
    
    procedure TForm1.Button1Click(Sender: TObject);
    var
      MySurface: TDirectDrawSurface;
    begin
      MySurface := TDirectDrawSurface.Create(DXDraw1.DDraw);
      MySurface.LoadFromFile(ImgPath1);
      DXDraw1.Surface.Fill(0);
      DXDraw1.Surface.Draw(0, 0, MySurface);
      DXDraw1.Flip;
      FreeAndNil(MySurface);
    end;
    
    procedure TForm1.Button2Click(Sender: TObject);
    var
      MySurface: TDirectDrawSurface;
      r: TRect;
    begin
      MySurface := TDirectDrawSurface.Create(DXDraw1.DDraw);
      MySurface.LoadFromFile(ImgPath1);
      DXDraw1.Surface.Fill(0);
      DXDraw1.Surface.Draw(0, 0, MySurface);
    
      r := Bounds(10, 10, DXDraw1.Width - 20, DXDraw1.Height - 20);
      DXDraw1.Surface.FillRect(r, $FF0000);
    
      DXDraw1.Flip;
      FreeAndNil(MySurface);
    end;
    
    procedure TForm1.Button3Click(Sender: TObject);
    var
      MySurface: TDirectDrawSurface;
      r: TRect;
    begin
      MySurface := TDirectDrawSurface.Create(DXDraw1.DDraw);
      MySurface.LoadFromFile(ImgPath1);
      DXDraw1.Surface.Fill(0);
      DXDraw1.Surface.Draw(0, 0, MySurface);
    
      r := Bounds(10, 10, DXDraw1.Width - 20, DXDraw1.Height - 20);
      DXDraw1.Surface.FillRectAlpha(r, $0000FF, 128);
    
      DXDraw1.Flip;
      FreeAndNil(MySurface);
    end;
    
    procedure TForm1.Button4Click(Sender: TObject);
    var
      MySurface: TDirectDrawSurface;
      r: TRect;
    begin
      MySurface := TDirectDrawSurface.Create(DXDraw1.DDraw);
      MySurface.LoadFromFile(ImgPath1);
      DXDraw1.Surface.Fill(0);
      DXDraw1.Surface.Draw(0, 0, MySurface);
    
      r := Bounds(10, 10, DXDraw1.Width - 20, DXDraw1.Height - 20);
      DXDraw1.Surface.FillRectAdd(r, $0000FF, 255);
    
      DXDraw1.Flip;
      FreeAndNil(MySurface);
    end;
    
    procedure TForm1.Button5Click(Sender: TObject);
    var
      MySurface: TDirectDrawSurface;
      r: TRect;
    begin
      MySurface := TDirectDrawSurface.Create(DXDraw1.DDraw);
      MySurface.LoadFromFile(ImgPath1);
      DXDraw1.Surface.Fill(0);
      DXDraw1.Surface.Draw(0, 0, MySurface);
    
      r := Bounds(10, 10, DXDraw1.Width - 20, DXDraw1.Height - 20);
      DXDraw1.Surface.FillRectSub(r, $0000FF, 255);
    
      DXDraw1.Flip;
      FreeAndNil(MySurface);
    end;
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Button1.Caption := '原始图片';
      Button2.Caption := 'FillRect';
      Button3.Caption := 'FillRectAlpha';
      Button4.Caption := 'FillRectAdd';
      Button5.Caption := 'FillRectSub';
    end;
    
    end.
    

  • 相关阅读:
    前端跨域整理
    URL HTML 统一资源定位器(Uniform Resource Locators)
    css属性选择器*=,|=,^=,$=,*=的区别
    JavaScript运算符 ~,~~,|,&,&&
    js获取url参数值的几种方式
    vue 常用插件集合(最全)
    Echarts曲线设置多条X轴和Y轴
    vue中引入.svg图标,使用iconfont图标库(SvgIcon组件使用)
    采用集成的Windows验证和使用Sql Server身份验证进行数据库的登录
    VS如何设置类或函数前不显示引用的数量
  • 原文地址:https://www.cnblogs.com/del/p/1376093.html
Copyright © 2011-2022 走看看