zoukankan      html  css  js  c++  java
  • VCL 中的 Windows API 函数(5): AlphaBlend

    AlphaBlend 是指定图像混合透明的函数, 在 Graphics、GraphUtil、RibbonStyleActnCtrls 单元用到.

    下面的测试是把一张图片显示在窗体, 并可以调整透明度.

    本例效果图:



    代码文件:
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ComCtrls;
    
    type
      TForm1 = class(TForm)
        TrackBar1: TTrackBar;
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
        procedure TrackBar1Change(Sender: TObject);
        procedure FormPaint(Sender: TObject);
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    var
      bit: TBitmap;
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      bit := TBitmap.Create;
      bit.LoadFromFile('c:\temp\Test.bmp');
    
      TrackBar1.Min := 0;
      TrackBar1.Max := 255;
      TrackBar1.Position := 128;
    
      DoubleBuffered := True;
    end;
    
    procedure TForm1.FormDestroy(Sender: TObject);
    begin
      bit.Free;
    end;
    
    procedure TForm1.FormPaint(Sender: TObject);
    var
      BlendFunc: TBlendFunction;
    begin
      BlendFunc.BlendOp := AC_SRC_OVER;
      BlendFunc.BlendFlags := 0;
      BlendFunc.SourceConstantAlpha := TrackBar1.Position;
    
      if bit.PixelFormat = pf32bit then
        BlendFunc.AlphaFormat := AC_SRC_ALPHA
      else
        BlendFunc.AlphaFormat := 0;
    
      Windows.AlphaBlend(Canvas.Handle,                 {目标 DC}
                         30, 10, bit.Width, bit.Height, {目标位置与大小}
                         bit.Canvas.Handle,             {源 DC}
                         0, 0, bit.Width, bit.Height,   {源位置与大小}
                         BlendFunc                      {透明相关的结构}
                         );
    end;
    
    procedure TForm1.TrackBar1Change(Sender: TObject);
    begin
      Repaint;
    end;
    
    end.
    
    窗体文件:
    object Form1: TForm1
      Left = 0
      Top = 0
      Caption = 'Form1'
      ClientHeight = 206
      ClientWidth = 223
      Color = clBtnFace
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -11
      Font.Name = 'Tahoma'
      Font.Style = []
      OldCreateOrder = False
      OnCreate = FormCreate
      OnDestroy = FormDestroy
      OnPaint = FormPaint
      PixelsPerInch = 96
      TextHeight = 13
      object TrackBar1: TTrackBar
        Left = 8
        Top = 175
        Width = 207
        Height = 23
        ShowSelRange = False
        TabOrder = 0
        OnChange = TrackBar1Change
      end
    end
    
  • 相关阅读:
    javascript 中的 parameter vs arguments
    5款免费开源自建私人云盘程序 实现网盘自建数据自我掌控
    CentOS 7下安装Nextcloud搭建个人网盘
    centos7升级自带的php5.4版本到php5.6
    docker的介绍以及常用命令
    docker-ce的安装以及卸载
    CentOS7安装weblogic集群思路梳理
    centos7修改静态ip地址
    Windows server 2008启动remote dosktop services服务报错1079
    Centos 7.x 安装配置tomcat-8过程梳理
  • 原文地址:https://www.cnblogs.com/del/p/1314749.html
Copyright © 2011-2022 走看看