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 

  • 相关阅读:
    Note/Solution 转置原理 & 多点求值
    Note/Solution 「洛谷 P5158」「模板」多项式快速插值
    Solution 「CTS 2019」「洛谷 P5404」氪金手游
    Solution 「CEOI 2017」「洛谷 P4654」Mousetrap
    Solution Set Border Theory
    Solution Set Stirling 数相关杂题
    Solution 「CEOI 2006」「洛谷 P5974」ANTENNA
    Solution 「ZJOI 2013」「洛谷 P3337」防守战线
    Solution 「CF 923E」Perpetual Subtraction
    KVM虚拟化
  • 原文地址:https://www.cnblogs.com/delphi7456/p/1883700.html
Copyright © 2011-2022 走看看