• 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.
    

  • 相关阅读:
    小型数据库的选择(轻量级数据库)(转)
    MSSOAP与WebService
    SOAP和WSDL的一些必要知识 (转)
    几个小型数据库的比较
    常用的嵌入式数据库的比较
    webservice Quiz(Wsdl &Soap)
    ASP.Net获取文件的路径
    SOAP=RPC+HTTP+XML
    记录几个IP查询接口
    COM+组件注册方法
  • 原文地址:https://www.cnblogs.com/del/p/1376093.html
Copyright © 2020-2023  润新知