文档章节

Delphi 与 DirectX 之 DelphiX(89): TDIB.DrawAlphaMask();

涂孟超
 涂孟超
发布于 2014/09/26 15:32
字数 353
阅读 9
收藏 0

本例效果图:



代码文件:
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

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2009/01/23/1380573.html

涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
开源游戏框架(转至wiki)

免费和开源引擎,转载自维基 Agar - 一个高级图形应用程序框架,用于2D和3D游戏。 Allegro - 基于 C/C++ 的游戏引擎,支持图形,声音,输入,游戏时钟,浮点,压缩文件以及GUI。 Axiom 引擎 ...

Matrix4X4
2012/04/17
1K
0
用特征码秒杀各程序语言按钮事件

作者:小童 工具:OllyDbg、Delphi程序一个、易语言程序一个、MFC程序一个 ----------------------------------------------------------------------------- ----------------------------......

狂斩一条龙
2012/10/09
0
0
8051模拟称重数--MyWeight

Delphi/MCU 8051模拟称重数 用于单片机发送模拟称重数,格式为梅特勒托利多IND231/BBA231连续格式 其中: 016.hex为称重 0.16Kg 而1401.hex为 14.01Kg, 可下载到单片机中 我所用到的MCU为:S...

彭龙
2014/10/26
769
0
GIS和RS的期刊影响因子列表

GIS and Remote Sensing Journal List with Impact Factors The following list provides impact factors for relevant GIS and Remote Sensing scientific journals. 2013 Impact Factor , ......

geowangsh
2016/02/03
359
0
【Visual C++】游戏开发笔记三十二 浅墨DirectX提高班之一 DirectX大局观认知篇

本系列文章由zhmxy555(毛星云)编写,转载请注明出处。 文章链接: http://blog.csdn.net/zhmxy555/article/details/8172615 作者:毛星云(浅墨) 邮箱: happylifemxy@163.com 这篇文章作...

长平狐
2012/11/12
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

zk中ToBeAppliedRequestProcessor解析

ToBeAppliedRequestProcessor在Leader中 在已处理事务和最后处理事务处理器之间,处理器链上下一个是FinalRequestProcessor public void processRequest(Request request) throws RequestPro...

writeademo
31分钟前
3
0
Allegro快捷键设置-PCB环境

立题简介: 内容:简单介绍Allegro绘制的PCB环境下的快捷键; 来源:实际使用得出; 作用:对Allegro绘制PCB快捷键进行介绍; PCB环境:Cadence 16.6; 立题详解: 对“allegro”板而言,其在...

demyar
32分钟前
2
0
idea maven web项目启动build时报错java.lang.NullPointerException

之前还好好的,重启一下idea就报这个错了,大概率是tomcat没杀掉端口被占用了,在tomcat配置中更换一下sever端口就好了

宇辰OSC
36分钟前
3
0
weed3-2.3.1.查询之输出

Weed3 一个超轻量级ORM框架(只有0.1Mb哦) 源码:https://github.com/noear/weed3 源码:https://gitee.com/noear/weed3 查询可是个复杂的话题了,可能我们80%的数据库处理都在查询。 今天先...

刘之西东
36分钟前
3
0
【Android JetPack系列】数据绑定:DataBinding

参考MVVM

Agnes2017
44分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部