使用AlphaBlend函数

函数功能

该 函数用来显示具有指定透明度的图像。

函数原型

参数

nXoriginDest:指定目标矩形区域左上角的X轴坐标,按逻辑单位。
nYOriginDest:指定目标矩形区域左上角的Y轴坐标,按逻辑单位。
nWidthDest:指定目标矩形区域的宽度,按逻辑单位。
hHeightdest:指向目标矩形区域的高度,按逻辑单位。
hdcSrc:指向源设备环境的句柄。
nXOriginSrc:指定源矩形区域左上角的X轴坐标,按逻辑单位。
nYOriginSrc:指定源矩形区域左上角的Y轴坐标,按逻辑单位。
nWidthSrc:指定源矩形区域的宽度,按逻辑单位。
nHeightSrc:指定源矩形区域的高度,按逻辑单位。
blendFunction:指定用于源 位图和目标位图使用的alpha混合功能,用于整个源位图的全局alpha值和格式信息。源和目标混合功能当前只限为AC_SRC_OVER。
最后一个参数blendFunction是一个 BLENDFUNCTION结构。 BLENDFUNCTION结构控制源和目标 位图的混合方式,它的BlendOp字段指明了源混合操作,但只支持AC_SRC_OVER,即根据源alpha值把 源图像叠加到目标图像上。OpenGL的alpha混合还支持其他的方式,如 常量颜色源。下一个字段BlendFlags必须是0,也是为以后的应用保留的。最后一个字段AlphaFormat有两个选择:0表示 常量alpha值,AC_SRC_ALPHA表示每个像素有各自的 alpha通道。

函数编辑

2运用

2. 如果AlphaFormat字段的值是AC_SRC_ALPHA,源设备表面的每个像素必须有各自的alpha通道。即,必须是32-bpp的物理 设备上下文,或是选中了32-bpp DDB和DIB段的内存设备上下文。这些情况下,每个源像素有4个8位通道:红、绿、蓝和alpha。每个像素的alpha通道和SourceConstantAlpha字段一起用于把源和目标混合起来。实际用于计算的运算式如下:
Tmp.Red = Src.Red * SourceConstantAlpha / 255;
Tmp.Green = Src.Green * SourceConstantAlpha / 255;
Tmp.Blue = Src.Blue * SourceConstantAlpha / 255;
Tmp.Alpha = Src.Alpha * SourceConstantAlpha / 255;
Beta = 255 – Tmp.alpha;
Dst.Red = Tmp.Red + Round((Beta * Dst.Red )/255);
Dst.Green = Tmp.Green + Round((Beta * Dst.Green)/255);
Dst.Blue = Tmp.Blue + Round((Beta * Dst.Blue )/255);
Dst.Alpha = Tmp.Alpha + Round((Beta * Dst.Alpha)/255);

返回值

Windows NT:若想获取更多 错误信息,请调用GetLastError 函数。

解决像素问题

备注

AlphaBlend不支持 镜像。如果源或目标区域的宽度或高度为负数,那么调用将失败。

C++Builder 加载图片 设置图片的透明度

[cpp]  view plain copy
  1. #include <vcl.h>
  2. #pragma hdrstop
  3. #include "Unit1.h"
  4. //---------------------------------------------------------------------------
  5. #pragma package(smart_init)
  6. #pragma resource "*.dfm"
  7. TForm1 *Form1;
  8. Byte  Transparency ; //透明度
  9. Graphics::TBitmap *Bit,*BitBack;
  10. //---------------------------------------------------------------------------
  11. __fastcall TForm1::TForm1(TComponent* Owner)
  12. : TForm(Owner)
  13. {
  14. }
  15. //---------------------------------------------------------------------------
  16. void __fastcall TForm1::FormCreate(TObject *Sender)
  17. {
  18. BitBack =new  Graphics::TBitmap();
  19. BitBack->LoadFromFile("c://1.bmp");
  20. Brush->Bitmap = BitBack;
  21. Bit =new Graphics::TBitmap();
  22. Bit->LoadFromFile("c://2.bmp");
  23. }
  24. //---------------------------------------------------------------------------
  25. void __fastcall TForm1::Button2Click(TObject *Sender)
  26. {
  27. TBlendFunction    Blend;
  28. Blend.BlendOp = AC_SRC_OVER;
  29. Blend.BlendFlags = 0;
  30. Blend.AlphaFormat = 0;
  31. Transparency = 100 ;  //透明度
  32. Blend.SourceConstantAlpha = Transparency;  //设置透明度
  33. ::AlphaBlend(Canvas->Handle,
  34. 10,
  35. 10,
  36. Bit->Width + 10,
  37. Bit->Height + 10,
  38. Bit->Canvas->Handle,
  39. 0,
  40. 0,
  41. Bit->Width,
  42. Bit->Height,
  43. Blend
  44. );
  45. }
  46. //---------------------------------------------------------------------------
  47. void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
  48. {
  49. delete Bit;
  50. delete BitBack;
  51. }
  52. //---------------------------------------------------------------------------

通过更改透明度使图片为透明相关推荐

  1. cocos2d-x游戏开发(十四)用shader使图片背景透明

    欢迎转载,地址:http://blog.csdn.net/fylz1125/article/details/8631783 好吧,终于抽时间写这篇文章了. 手头上有很多人物行走图,技能特效图等,但这些 ...

  2. python 做界面时如何使图片保持透明背景_Python matplotlib生成图片背景透明的示例代码...

    使用matplotlib生成图片,想要背景透明,而且图例部分也显示透明效果,找到了大概的设置方法,特此记录. # coding=utf-8 # matplotlib背景透明示例图 # python 3 ...

  3. cocos2d-x3.2中用shader使图片背景透明

    今天有人问我问题,说怎么实现背景虚化,换句话说,就是把某张图片的背景颜色(比如白色)给弄没了,不然贴在屏幕上有白色背景.下面是解决方法.用shader处理了像素,使黑色背景透明. Shader.h # ...

  4. python 做界面时如何使图片保持透明背景_Python matplotlib生成图片背景透明

    使用matplotlib生成图片,想要背景透明,而且图例部分也显示透明效果,找到了大概的设置方法,特此记录. # coding=utf-8 # matplotlib背景透明示例图 # python 3 ...

  5. VC透明显示带透明度PNG图片及不带透明度的图片

    一.显示带透明度的PNG图片 PNG图片的透明背景总是一片白色,后来才发现这其实是微软GDI+的设计问题,PNG图片是ARGB,使用GDI+载入图片的时候,GDI+会默认已经进行了预剩运算(PARGB ...

  6. html 图片变灰,科技常识:css使图片变灰的实现方法

    今天小编跟大家讲解下有关css使图片变灰的实现方法 ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了有关css使图片变灰的实现方法 的相关资料,希望小伙伴们看了有所帮助. 如果您是想将页面 网页 ...

  7. 使窗体拥有透明效果的API

    一.背景FlashGet的透明效果大家羡慕吧.传统的Windows应用程序想实现半透明效果,一般来说需要处理自己的窗口的WM_Paint消息窗口,很麻烦.现在好了,SetLayeredWindowAt ...

  8. 图片没有透明效果html,为什么png不是透明底

    为什么把图片保存成PNG格式 背景依旧不能透明? 我把图片部分透明化之后存图,在PS中能够清楚地看到透明区域,但一保存为P你不管它在电脑里怎么样 在电脑里是看不出来透明的 要上传到网上才有效果 存为p ...

  9. 【PS】如何把图片变成透明

    方法一: 8 H3 i* y( Y* q4 P% a 1.魔术棒选取背景区域,然后删除,将文件存存为PSD格式.( M/ R) n3 H  ]! {  }2 |6 X$ f, R( s - {9 S: ...

最新文章

  1. 深入理解TCP/IP协议族
  2. CommandBehavior.CloseConnection的使用
  3. 全栈深度学习第1期:如何启动一个机器学习项目?
  4. C++学习之路 | PTA(甲级)—— 1099 Build A Binary Search Tree (30分)(带注释)(精简)
  5. 长生不死、名人复活?疯狂的AI时代,人类竟要靠IA实现“永生”
  6. linux 脚本调用企业微信_shell或python调用企业微信发送消息(实现报警功能)
  7. tomcat xjar 加密_XJar Spring Boot JAR 安全加密运行工具
  8. ACM基础与精选2018
  9. 基于二进制粒子群算法的配电网故障诊断- 附代码
  10. hdfs中与file数组类似的数组_Java中的数组
  11. Flash破解工具-闪客精灵5.4
  12. MATLAB —— 绘制频谱图
  13. Java程序与设计11_一些题目
  14. 多线程爬取中国土地市场网土地交易数据,最新2020/08/21
  15. idea的git报错You have not concluded your merge
  16. DIY | 教你做一个万圣节专属徽章!
  17. 验证通扫描仪安装使用方法
  18. 天馈线频谱综合信号测试仪是什么 什么品牌的好用
  19. 简析客户流失的原因及解决办法
  20. android极光推送声音,【极光推送】iOS APNS 自定义铃声

热门文章

  1. ORA-19502ORA-27072
  2. 日语二级能力考试听力常见词汇
  3. Android Java 代码检索工具Codota
  4. php周计划表_初学者健身计划一周表精华版
  5. 手写数字识别 vs+opencv
  6. palo alto 3020防火墙NAT映射配置
  7. Java后端技术精选优秀博文
  8. 详解第三方支付之无卡通道
  9. 流媒体分析之webrtc之metartc 实现。
  10. 关于Join的时候where在on之前和之后的效率测试