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));//把源位图中的白色背景设置为透明色

  • 相关阅读:
    POJ 1741 Tree(树分治)
    HDU 2196 Computer(树形dp)
    2015沈阳区域赛Meeting(最短路 + 建图)
    make the fence great again(dp 二维)
    2017沈阳区域赛Infinite Fraction Path(BFS + 剪枝)
    bitset详解
    2016青岛区域赛.Coding Contest(费用流 + 概率计算转换为加法计算)
    2019上海网络赛B题(差分 + 离散化 or 差分 + 思维)
    poj-1664.放苹果.(递推)
    hdu-4738.Caocao's Bridges(图中权值最小的桥)
  • 原文地址:https://www.cnblogs.com/lisuyun/p/3399272.html
Copyright © 2011-2022 走看看