文档章节

VCL 中的 Windows API 函数(5): AlphaBlend

涂孟超
 涂孟超
发布于 2014/09/26 15:37
字数 273
阅读 10
收藏 0
点赞 0
评论 0
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

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2008/10/20/1314749.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
varnish 4.0 官方文档翻译14-Built in subroutines

Built in subroutines vcl_recv 在接收到完整的客户端请求后调用这个子程序。它决定是否处理请求,怎样处理请求,使用哪一个后端。 它也可运用于修改请求,一些经常自己做的事情。 vcl_recv...

wild-life
2015/06/15
0
0
varnish的VCL详细解析

varnish的VCL详细解析 VCL工作流程图如下: 下面是VCL常见的一些语法配置: 1、主机配置 backend www { .host = "www.example.com"; .port = "http"; .connect_timeout = 1s; 连接时间 .fir...

天涯悠客
06/26
0
0
实现基于Keepalived+Haproxy+Varnish+LNMP企业级架构

实现基于Keepalived+Haproxy+Varnish+LNMP企业级架构 Varnish知识储备: 常见的状态引擎之间的默认处理流程为: ①如果缓存命中:默认流程 用户请求–>vclrecv–>vclhash–>vclhit–>vcldel...

lc01081314
06/26
0
0
Varnish简单笔记(部分转载)

一、原理特点 Varnish是一个轻量级的cache和反向代理软件,有以下的优缺点: (1)基于内存进行缓存,速度比squid的硬盘缓存要快;但是varnish进程一旦出了问题,缓存数据就丢失了,后端的w...

sima2004
06/26
0
0
Varnish 学习笔记总结

声明:文中内容来自以下四个部分的学习笔记总结: 1.马哥教育马永亮老师讲授的varnish课程 2.高俊峰先生写的书籍《高性能Linux服务器构建实战》中的varnish章节 3.陈明乾先生的51cto博客:h...

jims
2015/11/09
0
0
DevExpress v15.1:VCL控件功能增强(三)

<下载最新版DevExpress VCL Controls v15.1.3> VCL Map Control 改进滚动 新版本改进了应用程序激活惯性滚动新地图选项的用户体验——当松开鼠标时地图滚动会逐渐停止。除了使用鼠标,最终用...

Miss_Hello_World
2015/08/05
0
0
缓存说明及varnish说明配置

什么是缓存,为什么要缓存 在客户端和原始服务器端之间存在一个可以自己构建响应报文的服务器,这个服务器通常就是缓存服务器.为什么要缓存服务器?在互联网上传输数据(这里指web浏览),数据传输...

vdm12315
06/27
0
0
varnish 4.0 官方文档翻译5-varnish概况

The Big Varnish Picture varnish概况 本节将回答这个问题:“varnish”到底是什么,命名的点点滴滴。 varnish两个主要的部分是在varnisd项目中的两个进程。第一个进程被叫做“the manager”...

wild-life
2015/05/09
0
0
Varnish4.0缓存代理配置

一、varnish原理: 1)Varnish简介: varnish缓存是web应用加速器,同时也作为http反向缓存代理。你可以安装varnish在任何http的前端,同时配置它缓存内容。与传统的 squid 相比,varnish 具...

何小帅
06/26
0
0
varnish 4.0 官方文档翻译12-VCL

VCL - Varnish Configuration Language 本节包含了怎样通过varnish配置语言vcl来通知varnish如何处理http请求。 varnish是高度结构化的系统。大多数其他的系统使用配置指令,在那里你基本上打...

wild-life
2015/06/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

idea tomcat 远程调试

tomcat 配置 编辑文件${tomcat_home}/bin/catalina.sh,在文件开头添加如下代码。    CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7829" Idea端配......

qwfys
今天
1
0
遍历目录下的文件每250M打包一个文件

#!/usr/bin/env python # -*- utf-8 -*- # @Time : 2018/7/20 0020 下午 10:16 # @Author : 陈元 # @Email : abcmeabc@163.com # @file : tarFile.py import os import tarfile import thr......

寻爱的小草
今天
1
0
expect同步文件&expect指定host和要同步的文件&构建文件分发系统&批量远程执行命令

20.31 expect脚本同步文件 expect通过与rsync结合,可以在一台机器上把文件自动同步到多台机器上 编写脚本 [root@linux-5 ~]# cd /usr/local/sbin[root@linux-5 sbin]# vim 4.expect#!/...

影夜Linux
今天
1
0
SpringBoot | 第九章:Mybatis-plus的集成和使用

前言 本章节开始介绍数据访问方面的相关知识点。对于后端开发者而言,和数据库打交道是每天都在进行的,所以一个好用的ORM框架是很有必要的。目前,绝大部分公司都选择MyBatis框架作为底层数...

oKong
今天
13
0
win10 上安装解压版mysql

1.效果 2. 下载MySQL 压缩版 下载地址: https://downloads.mysql.com/archives/community/ 3. 配置 3.1 将下载的文件解压到合适的位置 我最终将myql文件 放在:D:\develop\mysql 最终放的位...

Lucky_Me
今天
2
0
linux服务器修改mtu值优化cpu

一、jumbo frames 相关 1、什么是jumbo frames Jumbo frames 是指比标准Ethernet Frames长的frame,即比1518/1522 bit大的frames,Jumbo frame的大小是每个设备厂商规定的,不属于IEEE标准;...

问题终结者
今天
2
0
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令

expect脚本同步文件 在一台机器上把文件同步到多台机器上 自动同步文件 vim 4.expect [root@yong-01 sbin]# vim 4.expect#!/usr/bin/expectset passwd "20655739"spawn rsync -av ro...

lyy549745
今天
1
0
36.rsync下 日志 screen

10.32/10.33 rsync通过服务同步 10.34 linux系统日志 10.35 screen工具 10.32/10.33 rsync通过服务同步: rsync还可以通过服务的方式同步。那需要开启一个服务,他的架构是cs架构,客户端服务...

王鑫linux
今天
1
0
matplotlib 保存图片时的参数

简单绘图 import matplotlib.pyplot as pltplt.plot(range(10)) 保存为csv格式,放大后依然很清晰 plt.savefig('t1.svg') 普通保存放大后会有点模糊文件大小20多k plt.savefig('t5.p...

阿豪boy
今天
3
0
java 8 复合Lambda 表达式

comparator 比较器复合 //排序Comparator.comparing(Apple::getWeight);List<Apple> list = Stream.of(new Apple(1, "a"), new Apple(2, "b"), new Apple(3, "c")) .collect(......

Canaan_
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部