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.
    

  • 相关阅读:
    Java中的Graphics2D类基本使用教程
    JSP中页面向Action传递参数的几种方式
    中英文统计
    numpy数据集练习 ----------sklearn类
    IDEA在jsp页面写out.print()代码报错
    Tag文件的创建与应用
    Intellij部署Tomcat问题
    单例测试模式中【饿汉式】与【懒汉式】的区别
    java中类与方法叙述正确的是
    下列关于异常处理的描述中,错误的是()。
  • 原文地址:https://www.cnblogs.com/del/p/1376093.html
Copyright © 2011-2022 走看看