• c/c++设置图片为透明图


    在绘制图片的时候先把源位图填充背景设置为白色  

    例如:m_bufferpicture.FillSolidRect(0,0,m_nWidth,m_nHeight,RGB(255,255,255));//这里把设置源位图背景为白色

    然后再使用

    TransparentBlt()函数

    函数功能:该函数对指定的源设备环境中的矩形区域像素的颜色数据进行位块(bit_block)转换,并将结果置于目标设备环境。
    函数原型:BOOL TransparentBlt(HDC hdcDest, int nXOriginDest, int nYOriginDest, int nWidthDest, int hHeightDest, HDC hdcSrc, int nXOriginSrc, int nYOriginSrc, int nWidthSrc, int nHeightSrc, UINT crTransparent);
    参数:
    hdcDest:指向目标设备环境的句柄。
    nXOriginDest:指定目标矩形左上角的X轴坐标,坐标以逻辑单位表示。
    nYOriginDest:指定目标矩形左上角的Y轴坐标,坐标以逻辑单位表示。
    nWidthDest:指定目标矩形的宽度。
    nHeightDest:指定目标矩形的高度。
    hdcsrc:指向源设备环境的句柄。
    nXOriginSrc:指定源矩形(左上角)的X轴坐标,坐标以逻辑单位表示。
    nYOriginsrc:指定源矩形(左上角)的Y轴坐标,坐标以逻辑单位表示。
    nWidthSrc:指定源矩形的宽度。
    nHeightSrc:指定源矩形的高度。
    crTransparent:源位图中的RGB值当作透明颜色。(用RGB(0,0,0)也就是黑色不行)返回值:如果函数执行成功,那么返回值为TRUE;如果函数执行失败,那么返回值为FALSE。
    Windows NT:若想获取更多错误信息,请调用GetLastError函数。
    备注:函数TransparentBlt支持4位/像素和8位/像素格式的源位图,使用AlphaBlend可以指定带有透明度的32位/像素格式的位图。如果源和目标矩形的大小不一致,那么将对源位图进行拉伸以与目标矩形匹配,当使用SetStretchBltMode函数时,BLACKONWHITE和WHITEONBLACK两种iStretchMode模式将被转换成TransparentBlt函数的COLORONCOLOR模式。目标设备环境指定了用于目标坐标的变换类型,而源设备环境指定了源坐标使用的变换类型。如果源位图或目标位图的宽度或高度是负数,那么TransparentBlt函数也不对位图进行镜像。
    例如:

    pDC->TransparentBlt(ptLeftTop.x, ptLeftTop.y, m_nWidth, m_nHeight, &m_bufferpicture, 0, 0, m_nWidth, m_nHeight,RGB(255,255,255));//把源位图中的白色背景设置为透明色

  • 相关阅读:
    Unity的Hierarchies
    Unity的依赖注入
    lucene.net 查询与添加索引的同步问题[参考]
    强烈推荐SQL Prompt 3.8,并发布SQL Prompt 3.8 ,SQL Refator 的xxx
    ffmpg转换FLV
    Asp.net如何验证TextBox控件只输入数字(五种情况分析)转帖
    jquery 图片轮播
    SQL2005安装经验总结
    ajax对大量数据操作超时
    Adobe Flash Builder 4.7破解方法(绝对可用) 【转】
  • 原文地址:https://www.cnblogs.com/lisuyun/p/3399272.html
Copyright © 2020-2023  润新知