文档章节

WinAPI: AlphaBlend - 图像透明度

涂孟超
 涂孟超
发布于 2014/09/26 15:34
字数 386
阅读 4
收藏 0
点赞 0
评论 0
AlphaBlend(
  DC: HDC;                  {目标设备环境句柄}
  p2, p3, p4, p5: Integer;  {目标位置与宽高}
  DC6: HDC;                 {源设备环境句柄}
  p7, p8, p9, p10: Integer; {源位置与宽高}
  p11: TBlendFunction       {合成方式的数据结构, 见下表}
): BOOL;

//TBlendFunction 结构是 _BLENDFUNCTION 的重命名:
_BLENDFUNCTION = packed record
  BlendOp: BYTE;             {本例使用了: AC_SRC_OVER = 0}
  BlendFlags: BYTE;          {必须为 0}
  SourceConstantAlpha: BYTE; {透明度: 0..255}
  AlphaFormat: BYTE;         {通常为 0,如果源位图为32位真彩色,可为 AC_SRC_ALPHA }
end;

 
 
 
 
 

 

 

  
本例效果图:



代码文件:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    TrackBar1: TTrackBar;
    procedure FormCreate(Sender: TObject);
    procedure FormPaint(Sender: TObject);
    procedure TrackBar1Change(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

var
  Bit,BitBack: TBitmap;
  Transparency: Byte = 255; {透明度}

procedure TForm1.FormCreate(Sender: TObject);
begin
  {设定窗体背景}
  BitBack := TBitmap.Create;
  BitBack.LoadFromFile('c:\temp\Back.bmp');
  Brush.Bitmap := BitBack;

  {调入图片}
  Bit := TBitmap.Create;
  Bit.LoadFromFile('c:\temp\test.bmp');

  {给 TrackBar1 初始化}
  TrackBar1.Max := 255;
  TrackBar1.Min := 0;
  TrackBar1.ShowSelRange := False;
  TrackBar1.Position := TrackBar1.Max;
end;

procedure TForm1.FormPaint(Sender: TObject);
var
  Blend: TBlendFunction; {定义 AlphaBlend 要使用的 TBlendFunction 结构}
begin
  {给 TBlendFunction 结构赋值}
  Blend.BlendOp := AC_SRC_OVER;
  Blend.BlendFlags := 0;
  Blend.AlphaFormat := 0;
  Blend.SourceConstantAlpha := Transparency;

  Windows.AlphaBlend(Canvas.Handle, {因 VCL 有同名属性, 所以指定了是来自 Windows 单元}
                     10,
                     10,
                     Bit.Width + 10,
                     Bit.Height + 10,
                     Bit.Canvas.Handle,
                     0,
                     0,
                     Bit.Width,
                     Bit.Height,
                     Blend
                     );
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
  Transparency := TrackBar1.Position;
  Text := IntToStr(Transparency);
  Self.Repaint; {命令重绘}
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  Bit.Free;
  BitBack.Free;
end;

end.

 
 
 
 
 

 

 

  
窗体设计:
object Form1: TForm1
  Left = 352
  Top = 238
  Caption = 'Form1'
  ClientHeight = 209
  ClientWidth = 211
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  Position = poDesigned
  OnCreate = FormCreate
  OnDestroy = FormDestroy
  OnPaint = FormPaint
  PixelsPerInch = 96
  TextHeight = 13
  object TrackBar1: TTrackBar
    Left = 0
    Top = 186
    Width = 201
    Height = 24
    TabOrder = 0
    OnChange = TrackBar1Change
  end
end

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2008/05/19/1202729.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
RGBA alpha 透明度混合算法

Alpha 透明度混合算法,在网上查找了一下,主要有以下三种: 一、 R1,G1,B1,Alpha1 为前景颜色值,R2,G2,B2,Alpha2 为背景颜色值,则 前景色 R = R1 Alpha1 + R2 Alpha2 * (1-Alpha1) ; ...

rouway
2013/11/30
0
0
【Visual C++】游戏开发笔记十四 游戏画面绘图(四) 华丽的CImage类

本系列文章由zhmxy555编写,转载请注明出处。 http://blog.csdn.net/zhmxy555/article/details/7422922 作者:毛星云 邮箱: happylifemxy@qq.com 欢迎邮件交流编程心得 我们知道,Visual C+...

长平狐
2012/11/12
222
0
GDI+图像处理学习笔记——改变图像的透明度

GDI+是WindowsXp和windows Server 2003中的一个子系统,主要用于处理系统的绘制消息。GDI+是GDI的扩展,其继承了GDI的有点并在其基础上进行了改进,包括增加了一些GDI无法绘制的图形函数,同...

晨曦之光
2012/05/23
491
0
CSS 图像透明/不透明

使用CSS很容易创建透明的图像。 注意:CSS Opacity属性是W3C的CSS3建议的一部分。 更多实例 创建透明图像 - 悬停效果 创建一个具有文本的拥有背景图像的透明框 实例1 - 创建一个透明图像 CS...

wybo521
2016/01/21
6
0
[翻译]PyCairo指南--透明度

透明度 在这份PyCairo指南的这个部分,我们将讨论透明度。我们将提供一些基本的定义和三个有趣的透明度的例子。 透明度是指透过一种材料能够看到事物的品质。理解透明度最简单的方法就是想象...

WolfCS
2013/05/24
0
0
photoshop教程之如何为照片添加光彩照片

当你想要做一些有点不同的事情时,闪光灯可以添加到你的图像中,是一件有趣的事情。无论是让自己的问候卡片个性化,让孩子们的图像更加神奇,还是您喜欢闪闪发光,我们都会向您展示一种有趣而...

sum_mer521
01/30
0
0
ERROR: function @ Ordinal 1883 missing !!! Please Check your SYSGEN variable !!!

ERROR: function @ Ordinal xxx missing 今天新定制了一个OS,测试以前的应用程序,程序无法运行,查看串口信息有如下错误提示: ERROR: function @ Ordinal 1883 missing !!! Please Check ...

william_nw
06/26
0
0
关于GDI+在透明Bitmap上绘制时边缘有黑色重影的解决(WPF中)

最近在做软件工程课程的作业,其中有一个地方需要用到GDI+绘制图像并将句柄传给托盘当作托盘图标,可是因为楼主本人的强迫症比较严重,所以在测试时发现了一些小问题: 红线中是托盘区最左侧...

q886yes
04/21
0
0
打开黑箱重要一步,MIT提出弥合视觉推理模型的性能与可解释性鸿沟

     近日,MIT 林肯实验室和 Planck Aerosystems 联合发布论文,提出一组可组合的视觉推理原语,并构建了 Transparency by Design network(TbD-net),通过整合注意力机制推进了模型透...

机器之心
03/17
0
0
php GD复制png图片时的问题

用过GD的伙计确认一下,这属于GD自身的功能不足,还是鄙人水平不足。 imagecopymerge($image, $water, 0, 0, 0, 0, imagesx($water), imagesy($water),50); $water是水印图片,是有透明背景的...

朱__朱
2012/06/17
1K
2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

about git flow

  昨天元芳做了git分支管理规范的分享,为了拓展大家关于git分支的认知,这里我特意再分享这两个关于git flow的链接,大家可以看一下。 Git 工作流程 Git分支管理策略   git flow本质上是...

qwfys
今天
1
0
Linux系统日志文件

/var/log/messages linux系统总日志 /etc/logrotate.conf 日志切割配置文件 参考https://my.oschina.net/u/2000675/blog/908189 dmesg命令 dmesg’命令显示linux内核的环形缓冲区信息,我们可...

chencheng-linux
今天
1
0
MacOS下给树莓派安装Raspbian系统

下载镜像 前往 树莓派官网 下载镜像。 点击 最新版Raspbian 下载最新版镜像。 下载后请,通过 访达 双击解压,或通过 unzip 命令解压。 检查下载的文件 ls -lh -rw-r--r-- 1 dingdayu s...

dingdayu
今天
0
0
spring boot使用通用mapper(tk.mapper) ,id自增和回显等问题

最近项目使用到tk.mapper设置id自增,数据库是mysql。在使用通用mapper主键生成过程中有一些问题,在总结一下。 1、UUID生成方式-字符串主键 在主键上增加注解 @Id @GeneratedValue...

北岩
今天
2
0
告警系统邮件引擎、运行告警系统

告警系统邮件引擎 cd mail vim mail.py #!/usr/bin/env python#-*- coding: UTF-8 -*-import os,sysreload(sys)sys.setdefaultencoding('utf8')import getoptimport smtplibfr......

Zhouliang6
今天
0
0
Java工具类—随机数

Java中常用的生成随机数有Math.random()方法及java.util.Random类.但他们生成的随机数都是伪随机的. Math.radom()方法 在jdk1.8的Math类中可以看到,Math.random()方法实际上就是调用Random类...

PrivateO2
今天
1
0
关于java内存模型、并发编程的好文

Java并发编程:volatile关键字解析    volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在...

DannyCoder
昨天
0
0
dubbo @Reference retries 重试次数 一个坑

在代码一中设置 成retries=0,也就是调用超时不用重试,结果DEBUG的时候总是重试,不是0吗,0就不用重试啊。为什么还是调用了多次呢? 结果在网上看到 这篇文章才明白 https://www.cnblogs....

奋斗的小牛
昨天
2
0
数据结构与算法3

要抓紧喽~~~~~~~放羊的孩纸回来喽 LowArray类和LowArrayApp类 程序将一个普通的Java数组封装在LowArray类中。类中的数组隐藏了起来,它是私有的,所以只有类自己的方法才能访问他。 LowArray...

沉迷于编程的小菜菜
昨天
0
0
spring boot应用测试框架介绍

一、spring boot应用测试存在的问题 官方提供的测试框架spring-boot-test-starter,虽然提供了很多功能(junit、spring test、assertj、hamcrest、mockito、jsonassert、jsonpath),但是在数...

yangjianzhou
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部