zoukankan      html  css  js  c++  java
  • 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));//把源位图中的白色背景设置为透明色

  • 相关阅读:
    HISI MPP模块 AO 和 ADEC 参数配置(转)
    HISI H264/H265 P帧帧内刷新功能,降低I帧太大带来的网络冲击(转)
    LiteOS系统--快速烧写.bin文件到norflash相应位置(转)
    海思平台(hi3559av100)的pq_sample代码编译过程和执行过程(转)
    MySQL主从同步配置
    WebLogic
    为什么公司用weblogic而不用tomcat?
    查看和更改rpm的默认安装路径的方法
    VM options 以及 properties文件的一些理解
    Could not transfer artifact xxx from/to xxx解决方案
  • 原文地址:https://www.cnblogs.com/lisuyun/p/3399272.html
Copyright © 2011-2022 走看看