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后,在开始菜单中打 ...
随机推荐
- 让ie9之前的版本支持canvas
原来google的研发人员早就帮我们解决了这问题. 在这里我们得首先感谢google 在这链接http://excanvas.sourceforge.net/ 下载下来后 吧excanvas.js引入 ...
- windows 7 64位 安装oracle 11g R2
1.下载Oracle 11g R2 for Windows的版本 下载地址: http://www.oracle.com/technetwork/database/enterprise-edition ...
- 正确的使用枚举(Enum)
状态与选项的区别(states and options) 在用enum之前,我个人觉得,区分一下状态和选项的概念还是很必要的. 状态,同时只能有一种,如“OK”,“Error”,不可能同时是OK和Er ...
- jsp----在jsp中写java代码(变量和函数方法)
<%@page import="java.text.SimpleDateFormat"%><%@page language="java" im ...
- FineUI登入的例子中遇到的一些问题
对于在使用FineUI这个例子的时候我们首先就是要在form标签内部添加一个 第一步. <ext:PageManager ID="PageManager1" runat=&q ...
- Android_EditText
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&q ...
- TCL 双引号和花括号的区别
用了很一段时间的Modelsim,用TCL脚本仿真,开始注意起来它,看了些资料,有一个问题始终让我很困惑,那就是花括号 的用法,今天Google了一下,觉得有一点豁然了,记录一下.为了不让自己的翻译影 ...
- access应用分享
我最近开发了一个winform项目,用的是access数据库,当开发成功以后,有些电脑上就能正常运行,有些电脑就无法读取数据库文件,刚开始我以为是权限问题,后来我把安装程序卸载了,装在其它盘中(非C盘 ...
- JDBC——数据层DAO
DAO:Data Access Object DAO 数据层 Service 逻辑业务层 View 视图层 entity 实体层 实现增.删.改.查的数据层 public class EmpDA ...
- C#微信开发之旅--基本信息的回复
上一篇说到配置和验证<C#微信开发之旅--准备阶段> 下面来实现一下简单的信息回复. 也就是接收XML,返回XML 可以去看下微信开发文档的说明:http://mp.weixin.qq.c ...