Remark of BLENDFUNCTION from MSDN
Remarks
When the AlphaFormat member is AC_SRC_ALPHA, the source bitmap must be 32 bpp. If it is not, the AlphaBlend function will fail.
When the BlendOp member is AC_SRC_OVER, the source bitmap is placed over the destination bitmap based on the alpha values of the source pixels.
1.If the source bitmap has no per-pixel alpha value (that is, AC_SRC_ALPHA is not set), the SourceConstantAlpha value determines the blend of the source and destination bitmaps, as shown in the following table. Note that SCA is used for SourceConstantAlpha here. Also, SCA is divided by 255 because it has a value that ranges from 0 to 255.
| Dst.Red | = Src.Red * (SCA/255.0) | + Dst.Red * (1.0 - (SCA/255.0)) |
| Dst.Green | = Src.Green * (SCA/255.0) | + Dst.Green * (1.0 - (SCA/255.0)) |
| Dst.Blue | = Src.Blue * (SCA/255.0) | + Dst.Blue * (1.0 - (SCA/255.0)) |
If the destination bitmap has an alpha channel, then the blend is as follows.
| Dst.Alpha | = Src.Alpha * (SCA/255.0) | + Dst.Alpha * (1.0 - (SCA/255.0)) |
2.If the source bitmap does not use SourceConstantAlpha (that is, it equals 0xFF), the per-pixel alpha determines the blend of the source and destination bitmaps, as shown in the following table.
| Dst.Red | = Src.Red | + (1 - Src.Alpha) * Dst.Red |
| Dst.Green | = Src.Green | + (1 - Src.Alpha) * Dst.Green |
| Dst.Blue | = Src.Blue | + (1 - Src.Alpha) * Dst.Blue |
If the destination bitmap has an alpha channel, then the blend is as follows.
| Dest.Alpha | = Src.Alpha | + (1 - Src.Alpha) * Dst.Alpha |
3.If the source has both the SourceConstantAlpha (that is, it is not 0xFF) and per-pixel alpha, the source is pre-multiplied by the SourceConstantAlpha and then the blend is based on the per-pixel alpha. The following tables show this. Note that SourceConstantAlpha is divided by 255 because it has a value that ranges from 0 to 255.
| Src.Red | = Src.Red | * SourceConstantAlpha / 255.0; |
| Src.Green | = Src.Green | * SourceConstantAlpha / 255.0; |
| Src.Blue | = Src.Blue | * SourceConstantAlpha / 255.0; |
| Src.Alpha | = Src.Alpha | * SourceConstantAlpha / 255.0; |
| Dst.Red | = Src.Red | + (1 - Src.Alpha) * Dst.Red |
| Dst.Green | = Src.Green | + (1 - Src.Alpha) * Dst.Green |
| Dst.Blue | = Src.Blue | + (1 - Src.Alpha) * Dst.Blue |
| Dst.Alpha | = Src.Alpha | + (1 - Src.Alpha) * Dst.Alpha |
===========================分割线===========================
2.
| Dst.Red | = Src.Red | + (1 - (Src.Alpha/255.0)) * Dst.Red |
| Dst.Green | = Src.Green | + (1 - (Src.Alpha/255.0)) * Dst.Green |
| Dst.Blue | = Src.Blue | + (1 - (Src.Alpha/255.0)) * Dst.Blue |
| Dest.Alpha | = Src.Alpha | + (1 - (Src.Alpha/255.0)) * Dst.Alpha |
3.
| srcAlpha | = Src.Alpha | |
| Src.Red | = Src.Red | * SourceConstantAlpha / 255.0; |
| Src.Green | = Src.Green | * SourceConstantAlpha / 255.0; |
| Src.Blue | = Src.Blue | * SourceConstantAlpha / 255.0; |
| Src.Alpha | = Src.Alpha | * SourceConstantAlpha / 255.0; |
| Dst.Red | = Src.Red | + (1 - (srcApha/255.0)) * Dst.Red |
| Dst.Green | = Src.Green | + (1 - (srcApha/255.0)) * Dst.Green |
| Dst.Blue | = Src.Blue | + (1 - (srcApha/255.0)) * Dst.Blue |
| Dst.Alpha | = Src.Alpha | + (1 - (srcApha/255.0)) * Dst.Alpha |
MSDN 备注有点错误.应该先除以255.0的
Remark of BLENDFUNCTION from MSDN的更多相关文章
- Visual Studio 2010的MSDN帮助文档离线使用
如果没有在安装vs过程中安装帮助,也可通过Visual Studio帮助菜单中的Manage Help Settings来对帮助进行设置或安装. 可以选择从磁盘安装内容,如果选择从磁盘安装可能会要求提 ...
- MSDN文档篇
很多人网上下载3~10G不等的MSDN文档,发现,下载完成了不会用 很多人每次都得在线下载文档,手上万千PC,都重新下载不是得疯了? so==> 先看几张图 推荐一个工具:https://vsh ...
- 使用SHFB(Sandcastle Help File Builder)建立MSDN风格的代码文档
使用SHFB(Sandcastle Help File Builder)建立MSDN风格的代码文档 下载地址:http://sandcastle.codeplex.com/ 下载地址2:http:// ...
- MSDN杂志上Wix相关的文章
使用 MSBuild 和 Windows Installer XML 执行自动发布: http://msdn.microsoft.com/zh-cn/magazine/cc163456.aspx 用于 ...
- 使用 Async 和 Await 的异步编程(C# 和 Visual Basic)[msdn.microsoft.com]
看到Microsoft官方一篇关于异步编程的文章,感觉挺好,不敢独享,分享给大家. 原文地址:https://msdn.microsoft.com/zh-cn/library/hh191443.asp ...
- [已解决]从微软合作伙伴资源和MSDN下载系统和软件Microsoft download Manager无效
有个itellyou,更新了所有MSDN的软件包.如果自己有微软的注册账户,还是从微软官网下载比较好.而且对自己账户里的系统和itellyou里的做了对比.发现SHA1码不相同,估计官方分配的序列号也 ...
- diff/merge configuration in Team Foundation - common Command and Argument values - MSDN Blogs
One of the extensibility points we have in Team Foundation V1 is that you can configure any other di ...
- 源码网站(msdn.itellyou.cn) good
verysource 100万源码http://www.verysource.com/category/delphi-vcl/ MSDN DOWNLOADhttp://msdn.itellyou.cn ...
- MSDN Library for vs 2010安装及使用(MSDN Library)
VS2010正式版不再有单独的MSDN Library安装选项,VS2010的ISO安装光盘里已经包含有MSDN Library,只不过要手动安装,方法如下: 1.安装完VS2010后,在开始菜单中打 ...
随机推荐
- HDInsight-Hadoop实战(一)站点日志分析
HDInsight-Hadoop实战(一)站点日志分析 简单介绍 在此演示样例中.你将使用分析站点日志文件的 HDInsight 查询来深入了解客户使用站点的方式.借助此分析.你可查看外部站点一天内对 ...
- js与事件处理
1. <a href="javascript:showModalDialog('../TrainingReq/QryTermCourseInfo.aspx?TermCourseID=& ...
- Java synchronized 总结
在Java开发的时候经常会用到关键字synchronized来对代码进行同步,在使用的过程中,对于synchronized确不是很熟悉,最近在看Spring源码时,发现有不少地方都用到同步,因此,趁此 ...
- struts----通配符设置
本次学习的内容是struts通配符配置: 具体内容为: 一.准备工作 1.新建Web工程 2.添加struts:右键点击工程名选择My Eclipse-->点击add struts..--> ...
- OpenJDK1.8 安装
1. 安装JDK yum install -y java-1.8.0-openjdk-devel 2. 设置环境变量 /etc/profile文件增加 export JAVA_HOME=/usr/li ...
- JVM笔记7:类加载器
虚拟机设计团队把类加载阶段中的"通过一个类的全限定名来获取描述此类的二进制字节流"这个动作放到Java虚拟机外部实现,以便让应用程序自己决定如何去获取所需要的类,实现这个动作的代码 ...
- Oracle--常见Exception
1. 错 误 名 称 错误代码 错 误 含 义 2. CURSOR_ALREADY_OPEN ORA_06511 试图打开已经打开的游标 3. INVALID_CURSOR ORA_ ...
- TPL(Task Parallel Library)多线程、并发功能
The Task Parallel Library (TPL) is a set of public types and APIs in the System.Threading and System ...
- TMemIniFile 与TIniFile 区别
在uses 申明 Inifiles MyStream:TMemIniFile; MyStream:=TMemIniFile.Create('c:\proxy.ini'); memo1.Text:=My ...
- java 知识 链接
www.java2blog.com/2016/04/hashmap-in-java-with-examples.html HashMap全剖析 http://card.weibo.com/articl ...