首页 > 系统相关 >VCL 中的 Windows API 函数: AlphaBlend

VCL 中的 Windows API 函数: AlphaBlend

时间:2023-05-13 11:24:09浏览次数:41  
标签:BlendFunc Sender Windows VCL TForm1 TObject API bit procedure

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.

标签:BlendFunc,Sender,Windows,VCL,TForm1,TObject,API,bit,procedure
From: https://www.cnblogs.com/lucken2000/p/17396983.html

相关文章

  • 5-12|etcd api常用操作
    如果需要使用v2versionapi,启动etcd时候需要加入“ETCD_ENABLE_V2=true”参数,否则会报错“404pagenotfound”获取etcd信息版本信息#curl-Lhttp://172.16.101.55:2379/version{"etcdserver":"3.4.1","etcdcluster":"3.4.0"}健康状态#curl-Lhttp://172.16.101.5......
  • windows提权-绕过UAC提权
    windows提权-绕过UAC提权目录windows提权-绕过UAC提权一、UAC概述二、MSF和CS过UAC三、基于白名单AutoElevate绕过UAC四、基于白名单DLL劫持绕过UAC提权五、CVE-2019-1388UAC提权六、Windows令牌概述和令牌窃取攻击一、UAC概述UAC(UserAccountControl),中文翻译为用户帐户控制,......
  • 【Windows】【Chrome】获取 Chrome 离线安装包
    背景有的时候我们需要下载最新版的chrome来试试新特性通用方法https://blog.csdn.net/RadiantJeral/article/details/114436104......
  • EntityFramework Core 6.0 MySql WebApi
    Microsoft.EntityFrameworkCoreMicrosoft.EntityFrameworkCore.DesignPomelo.EntityFrameworkCore.MySqlMicrosoft.EntityFrameworkCore.Tools-----------------------------------------------------------------------------------------------------------------------......
  • Windows——Windows11右键经典栏与传统栏转换
    图1.Windows11右键默认为经典菜单栏图2.传统右键菜单栏/显示更多选项由经典右键菜单栏变为传统右键菜单栏【图1变图2】运行reg.exeadd"HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32"/f/ve将【显示更多选项】作为默......
  • Windows查看端口情况
    一、查看Windows目前所有使用端口netstat-ano二、查看指定的端口netstat-ano|findstr3389三、使用tasklist命令查看指定PID对应的进程名tasklist|findstr283664  ......
  • windows task
    Win+Randtypingtaskschd.mscschtasks.exe/Create Addanewscheduledtask/tn Nameoftask/sc schedulefrequency(MINUTE,HOURLY,DAILYandsoon)/d Onwhichdayordayofmonththetaskshallbescheduled.Youcanuse*forschedulingoneveryday......
  • 修改Windows远程桌面的端口
    一、图形界面下修改启动注册表编辑器。(在“搜索”框中键入regedit。)导航到以下注册表子项:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TerminalServer\WinStations\RDP-Tcp查找端口号单击“编辑”>“修改”,然后单击“十进制”。键入新端口号,然后单击“确定”......
  • 更改微信PC版(电脑版、windows版)的消息提示音
    目标:声音文件包含在微信PC版安装路径中的「WeChatResource.dll」文件中,修改它。路径举例:C:\ProgramFiles(x86)\Tencent\WeChat\[3.9.2.26] 用到的软件:eXeScope下载地址:https://www.123pan.com/s/kW3DVv-aHxJA.html复制链接(破解版)https://ro.softpedia-sec......
  • sysperp之windows10 Sysperp 之 win10
    关于win10中 sysperp应用程序本博主刚刚踩的坑如果你是工作电脑切有且只有一个盘则千万千万千万(重要事情说三遍)不要运行 这个东西否则你有可能会陷入无限循环之无法启动原系统。或者说你已经备份好,但是要做好无限重启的准备。我现在已经换了另外一台电脑在写这个文章。......