• 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:	empTest.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.

  • 相关阅读:
    JAVA CAS原理深度分析
    Java 并发类库AbstractQueuedSynchronizer 分析
    构建高并发高可用的电商平台架构实践
    简单控件 复合控件
    WebFrom基础
    控件m
    控件
    WinForm
    操作数据类m
    数据操作类
  • 原文地址:https://www.cnblogs.com/shijiaoyun/p/3844369.html
Copyright © 2020-2023  润新知