zoukankan      html  css  js  c++  java
  • VCL 中的 Windows API 函数: 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. 

      窗体文件:

    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 

  • 相关阅读:
    C# 停止或开启服务
    微软企业库 缓存
    C# 获取图片一部分
    [转载]MVC3在win 2003虚拟主机上的调试
    mongodb查询的语法
    Mongodb亿级数据量的性能测试比较完整收藏一下
    正则验证数字
    收到了Gmail的Beta测试邀请
    C#新手经验点滴
    Windows消息机制
  • 原文地址:https://www.cnblogs.com/delphi7456/p/1883700.html
Copyright © 2011-2022 走看看