文档章节

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

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

没有更多内容

加载失败,请刷新页面

加载更多

GO 数组相关操作

package mainimport("fmt""math/rand""time")func main() {//数组的几种定义方式var arr1 [3]int = [3]int{1,2,3}var arr2 = [3]int{4,5,6}arr3 := [3]string{"h", "w", ......

汤汤圆圆
49分钟前
1
0
JAVA 中interrupt、interrupted和isInterrupted的区别

首先,我们说明下三个方法的功能 interrupt() 向当前调用者线程发出中断信号 isinterrupted() 查看当前中断信号是true还是false interrupted() 是静态方法,查看返回当前中断信号并将中断信号...

我爱春天的毛毛雨
53分钟前
1
0
Coding and Paper Letter(二十二)

资源整理。 1 Coding: 1.开源项目openeo api。oponEO开发了一个开放的API,以简单统一的方式将R,python和javascript客户端连接到对地观测大数据云平台的后台。 此存储库包含此API,即oponE...

胖胖雕
今天
1
0
RxJS的另外四种实现方式(三)——性能最高的库

接上篇 RxJS的另外四种实现方式(二)——代码最小的库(续) 代码最小的库rx4rx-lite虽然在性能测试中超过了callbag,但和most库较量的时候却落败了,于是我下载了most库,要解开most库性能...

一个灰
今天
6
0
马太效应

马太效应

yizhichao
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部