AlphaBlend是Window自带的GDI函数,在作GUI的时候为了达到更美丽的效果我们经常常使用它.

BLENDFUNCTION是AlphaBlend用控制透明效果的重要參数.

定义例如以下:

typedef struct _BLENDFUNCTION {
  BYTE     BlendOp;
  BYTE     BlendFlags;
  BYTE     SourceConstantAlpha;
  BYTE     AlphaFormat;
}BLENDFUNCTION, *PBLENDFUNCTION, *LPBLENDFUNCTION;

BlendOp: 这个參数必须也仅仅能为AC_SRC_OVER(0x00),意思就是把源图片覆盖到目标之上.

BlendFlags: 必须为0

SourceConstantAlpha: 简写为SCA,指定源图片的透明度,这个值是会和源图片的Alpha通道值合并计算的.

AlphaFormat: 能够填两种,一种是0x00,一种是AC_SRC_ALPHA(0x01).填0的话,AlphaBlend据说就和BitBlt一样了,我没有试验过~填1的话,源DC必须是32位的DC不然的话,AlphaBlend会返回參数错误.

计算公式(当SCA不是0xFF时):

输出像素(R,G,B,A) = 源像素(R,G,B,A) * SCA / 0xFF + 目标像素(R,G,B,A) * (1.0 - SCA / 0xFF)

当SCA是0xFF时,计算公式

输出像素(R,G,B,A) = 源像素(R,G,B,A) + 目标像素(R,G,B,A) * (1.0 - 源像素(A) / 0xFF)

混合计算公式

输出像素(R,G,B) = 源像素(R,G,B) * SCA / 0xFF + 目标像素(R,G,B) * (1.0 - 源像素(A) / 0xFF * SCA / 0xFF)

转载于:https://www.cnblogs.com/mfrbuaa/p/4389865.html

AlphaBlend參数BLENDFUNCTION相关推荐

  1. 具体解释可变參数列表

    可变參数   至少有一个參数 比如:void add(int a,- ){} 例题  模拟printf()函数 #include <stdio.h> #include <stdarg ...

  2. 使用JDBC改变Oracle的session參数 NLS_DATE_FORMAT

    近期项目除了一个问题,场景大概是这种,项目在国外开发.在项目开发过程中使用了大量的Oracle函数TO_DATE,可是开发者没有写第二个參数. 所以项目在国外的server上能够正常执行.但是在国内的 ...

  3. C# 多线程參数传递

    1.通过实体类来传递(能够传递多个參数与获取返回值),demo例如以下: 须要在线程中调用的函数: namespace ThreadParameterDemo {public class Functi ...

  4. TVS參数具体解释及选型应用

    一.首先了解TVS管的參数,我们以littelfuse的5.0SMDJ系列为例. 图1 图2 最大峰值脉冲功率 Maximum Peak Pulse Power Pppm峰值脉冲功率为ESD器件上瞬间 ...

  5. JVM经常使用的调优參数

    -Xms512m -Xmx1024m -XX:MaxPermSize=1204m -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+ ...

  6. java之 ------ 可变參数和卫条件

    可变參数:适用于參数个数不确定.类型确定的情况,java把可变參数当做数组处理. 可变參数必须位于最后一项.当可变參数个数多于一个时,必将有一个不是最后一项,所以仅仅支持有一个可变參数. 可变參数的书 ...

  7. 【Python】Python获取命令行參数

    有时候须要用同一个Python程序在不同的时间来处理不同的文件,此时假设老是要到Python程序中去改动输入.输出文件名称.就太麻烦了. 而通过Python获取命令行參数就方便多了.以下是我写得一个小 ...

  8. 菜鸟学习Spring——60s利用JoinPoint获取參数的值和方法名称

    一.概述 AOP的实现方法在上两篇博客中已经用了两种方法来实现如今的问题来了尽管我们利用AOP,那么client怎样信息传递?利用JoinPoint接口来实现client给详细实现类的传递參数. 二. ...

  9. MySQL具体解释(21)------------缓存參数优化

    数据库属于 IO 密集型的应用程序.其主要职责就是数据的管理及存储工作. 而我们知道,从内存中读取一个数据库的时间是微秒级别,而从一块普通硬盘上读取一个IO是在毫秒级别,二者相差3个数量级.所以,要优 ...

最新文章

  1. 城市大脑全球标准研究2:如何理解和定义城市大脑?
  2. leetcode A String Replacement Problem---流程图
  3. centos solr 部署到 tomcat 上
  4. Php7实现文件下载,PHP7 SFTP下载文件并重命名该下载文件
  5. oracle 区分配,ORACLE自动段管理的区分配大小测试
  6. meta http-equiv=X-UA-Compatible content=IE=edge / 的说明
  7. Using Oracle Data Integrator Open Tools
  8. 茶百科 android代码,基于android平台手机茶百科开发设计---学位论文.doc
  9. Windows软件路由器运用实例之OSPF配置
  10. HDU 1222 Wolf and Rabbit(gcd)
  11. linux机器crt连接不上,SecureCRT连不上Linux主机了,求破
  12. Smobiler实现app的主页——C# 或.NET Smobiler实例开发手机app(三)
  13. SIFI和ORB在尺度缩放、旋转、仿射上的特征点不变实验代码,并比较SIFI和ORB提取特征点的速度
  14. 常见文章、图文素材采集软件优缺点比较分析
  15. 全方面对比流行报表开发工具,哪一个才是你的菜?
  16. python模拟按键网游_Python 实现键盘鼠标按键模拟
  17. 基于RSA+AES 软件授权License
  18. 腾讯云服务器的项目部署
  19. Java高级开发必备--Docker进阶(一篇详细教程,进阶Docker)
  20. Airtestpoco学习历程1——设备连接

热门文章

  1. 【Linux】七、DHCP服务器配置与管理
  2. 【我的前端】前端项目小练习:CSS创建3D圆柱旋转效果
  3. delta 大写形式 三角符号
  4. 祭我的小三之HTC G3
  5. 华赛(HuaSy)[华为(HuaWei)赛门铁克(Symantec)]与华为关系
  6. 基于C++的微流控生物芯片模拟程序设计
  7. (转)《完全用Linux工作》
  8. Android Bitmap图像优化
  9. android常用库
  10. 3par交换机端口降级及相关排查命令