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.
    

  • 相关阅读:
    Android学习系列(34)App应用之发布各广告平台版本
    Android拓展系列(6)CM9源码下载和编译
    Android拓展系列(8)Vim插件便捷管理(使用git submodule和pathogen)
    [Android应用]《幽默笑话》V1.0 Beta 版本发布!
    [Android应用]《养生视线》V2.1 正式版本粉墨登场!
    Android设计模式系列(9)SDK源码之适配器模式
    企业定制软件开发的两个核心问题
    持续部署才是王道
    组织模式 Introduction
    高性能计算摘要
  • 原文地址:https://www.cnblogs.com/del/p/1376093.html
Copyright © 2011-2022 走看看