zoukankan      html  css  js  c++  java
  • Delphi 与 DirectX 之 DelphiX(89): TDIB.DrawAlphaMask();


    本例效果图:



    代码文件:
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, DIB, StdCtrls, ExtCtrls;
    
    type
      TForm1 = class(TForm)
        DXPaintBox1: TDXPaintBox;
        Button1: TButton;
        Button2: TButton;
        ColorBox1: TColorBox;
        ColorBox2: TColorBox;
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    const str = '春';
    
    var
      dib,dib1,dib2: TDIB;
    
    procedure TForm1.FormCreate(Sender: TObject);
    const
      ImgPath1 = 'C:\Temp\DX.jpg';
    begin
      dib := TDIB.Create;
      dib1 := TDIB.Create;
      dib2 := TDIB.Create;
    
      dib.LoadFromFile(ImgPath1);
    
      DXPaintBox1.ClientWidth := dib.Width;
      DXPaintBox1.ClientHeight := dib.Height;
      DXPaintBox1.DIB.Assign(dib);
    
      dib1.Assign(dib);
    
      dib2.SetSize(dib.Width, dib.Height, 24);
      dib2.Canvas.Brush.Style := bsClear;
      dib2.Canvas.Font.Name := '黑体';
      dib2.Canvas.Font.Size := 90;
      dib2.Canvas.Font.Style := [fsBold];
    
      ColorBox1.Selected := clBlack;
      ColorBox2.Selected := clYellow;
    end;
    
    procedure TForm1.FormDestroy(Sender: TObject);
    begin
      dib.Free;
      dib1.Free;
      dib2.Free;
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      dib1.Assign(dib);
      dib2.Fill(ColorBox1.Selected);
      dib2.Canvas.Font.Color := ColorBox2.Selected;
      dib2.Canvas.TextOut(0, 0, str);
    
      dib1.DrawAlphaMask(dib2, dib1, 0, 0, dib.Width, dib.Height, 0, 0);
    
      DXPaintBox1.DIB.Assign(dib1);
      DXPaintBox1.Repaint;
    end;
    
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      dib1.Assign(dib);
      dib2.Fill(ColorBox2.Selected);
      dib2.Canvas.Font.Color := ColorBox1.Selected;
      dib2.Canvas.TextOut(0, 0, str);
    
      dib1.DrawAlphaMask(dib2, dib1, 0, 0, dib.Width, dib.Height, 0, 0);
    
      DXPaintBox1.DIB.Assign(dib1);
      DXPaintBox1.Repaint;
    end;
    
    end.
    

    窗体文件:
    object Form1: TForm1
      Left = 0
      Top = 0
      Caption = 'Form1'
      ClientHeight = 142
      ClientWidth = 226
      Color = clBtnFace
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -11
      Font.Name = 'Tahoma'
      Font.Style = []
      OldCreateOrder = False
      OnCreate = FormCreate
      OnDestroy = FormDestroy
      PixelsPerInch = 96
      TextHeight = 13
      object DXPaintBox1: TDXPaintBox
        Left = 8
        Top = 8
        Width = 81
        Height = 73
        AutoStretch = False
        Center = False
        KeepAspect = False
        Stretch = False
        ViewWidth = 0
        ViewHeight = 0
      end
      object Button1: TButton
        Left = 143
        Top = 78
        Width = 75
        Height = 25
        Caption = 'Button1'
        TabOrder = 0
        OnClick = Button1Click
      end
      object Button2: TButton
        Left = 143
        Top = 109
        Width = 75
        Height = 25
        Caption = 'Button2'
        TabOrder = 1
        OnClick = Button2Click
      end
      object ColorBox1: TColorBox
        Left = 143
        Top = 8
        Width = 81
        Height = 22
        ItemHeight = 16
        TabOrder = 2
      end
      object ColorBox2: TColorBox
        Left = 143
        Top = 36
        Width = 81
        Height = 22
        ItemHeight = 16
        TabOrder = 3
      end
    end
    
  • 相关阅读:
    hdu 2019 数列有序!
    hdu 2023 求平均成绩
    HDU 5805 NanoApe Loves Sequence (思维题) BestCoder Round #86 1002
    51nod 1264 线段相交
    Gym 100801A Alex Origami Squares (求正方形边长)
    HDU 5512 Pagodas (gcd)
    HDU 5510 Bazinga (字符串匹配)
    UVALive 7269 Snake Carpet (构造)
    UVALive 7270 Osu! Master (阅读理解题)
    UVALive 7267 Mysterious Antiques in Sackler Museum (判断长方形)
  • 原文地址:https://www.cnblogs.com/del/p/1380573.html
Copyright © 2011-2022 走看看