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
    
  • 相关阅读:
    ZOJ 1002 Fire Net (火力网)
    UVa OJ 117 The Postal Worker Rings Once (让邮差只走一圈)
    UVa OJ 118 Mutant Flatworld Explorers (变体扁平世界探索器)
    UVa OJ 103 Stacking Boxes (嵌套盒子)
    UVa OJ 110 MetaLoopless Sorts (无循环元排序)
    第一次遇到使用NSNull的场景
    NSURL使用浅析
    从CNTV下载《小小智慧树》
    NSDictionary and NSMutableDictionary
    Category in static library
  • 原文地址:https://www.cnblogs.com/del/p/1380573.html
Copyright © 2011-2022 走看看