天天动画片 > 八卦谈 > Windows API TransparentBlt 函数详解

Windows API TransparentBlt 函数详解

八卦谈 佚名 2023-04-30 03:13:35

TransparentBlt函数用于进行从指定的原设备上下文到目标设备上下文图像位块的颜色传输
简言之,TransparentBlt函数主要用于从源图像中以位块的形式(一张位图可以被分为好几个不同颜色的位图块,可以理解为有颜色的小正方形色块组成的一张图片)传输图像到绘图窗口

  • 函数常用功能


    1. 直接用于通过调用Windows GDI函数来在窗口中显示图片

    2. 用于位图的截图操作,由于这个函数将图像以位块的形式传输,所以我们可以通过只传输部分位块以达到截取部分图片的操作

    3. 用于实现透明色,由于这个函数将图像以为快的形式传输,所以我们可以通过只传输部分位块以达到实现透明效果,例如把不需要的部分全部调成一个图片中没有出现过的颜色(很重要,否则会造成图像缺失),然后设置若位块的颜色与之相符,色不传输,就达到了视线透明色的效果了

    • 函数语言

                

    代码输入失败 可以关注知乎获取
    • 函数参数

    • 函数的返回值

    如果该函数成功执行,则返回值为TRUE.

    如果该函数执行失败,则返回值为FALSE.

    • 函数的注意事项

    1. TransparentBlt函数兼容的格式:bitmaps位图(DDBs)

    2. TransparentBlt函数支持源位图的所有格式,但是对于32位的位图只复制alpha值。使用AlphaBlend函数来指定32位的位图中每个像素的透明度

    3. 如果源位图和目标位图的举行大小不相同,那么将会将源位图拉伸以匹配目标矩形的大小

    4. 当使用 SetStretchBltMode 函数的时候,BLACKONWHITE 和 WHITEONBLACK 的 IStretchMode 模式将会在 TransparentBLT 函数中转换为 COLORONCOLOR 模式

    5. 目标设备上下文指定目标坐标的转换类型,源设备上下文指定源坐标的转换类型

    6. 如果源或目标位图的宽度或高度为负,则 TransparentBlt 不会镜像(英文文档中用的是mirror)位图

    7. 在多显示器的系统中使用该函数时,hdcSrc 和 hdcDest 必须引用同一设备,否则该函数将失效,要在 DCs 之间传输不同设备的数据,请通过调用 GetDIBits 将内存位图转换为 DIB 。要将 DIB 显示到第二个设备请调用 SetDIBits 或StretchDIBits

    函数使用环境要求

    最低客户端版本:Windows 2000 Professional(仅桌面应用)
    最低服务器版本:Windows 2000 Server(仅桌面应用)
    引用的头文件:WinGdi.h和Windows.h
    引用的库文件:Msimg32.lib
    引用的DLL文件:Msimg32.dll

    使用示例

    我的知乎专栏:https://zhuanlan.zhihu.com/p/165643195  欢迎关注

    本文标题:Windows API TransparentBlt 函数详解 - 八卦谈
    本文地址:www.ttdhp.com/article/29426.html

    天天动画片声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
    扫码关注我们