zoukankan      html  css  js  c++  java
  • GDI使用TransparentBlt画透明位图


    void CChildView::OnPaint()

    {
    CPaintDC dc(this);

    CBitmap bmp, *oldBmp;
    BITMAP bm;
    bmp.LoadBitmap(IDB_BITMAP1); // 从资源加载位图
    bmp.GetObject(sizeof BITMAP, &bm); // 获取位图的宽高等信息
    CDC memDC;
    memDC.CreateCompatibleDC(&dc);
    oldBmp = memDC.SelectObject(&bmp);

    TransparentBlt(
    dc.m_hDC,
    0,0,
    bm.bmWidth, bm.bmHeight,
    memDC.m_hDC,
    0,0,
    bm.bmWidth, bm.bmHeight, // 这两个参数必须小于或等于位图的实际宽度和高度
    RGB(0,0,0)); // 设置黑色为透明色

    memDC.SelectObject(oldBmp);
    }

     

     

    在我使用TransparentBlt函数的时候,发现了这个问题,用BitBlt可以显示,TransparentBlt就不能。

    后经过测试,发现是TransparentBlt函数第9个和第10个参数的问题,

    即nWidthSrc 和nHeightSrc这两个参数

    这两个参数必须小于或等于位图的

  • 相关阅读:
    函数之形参与实参
    函数的介绍与方法
    生活如戏
    zabbix中的sql
    1
    1
    通过snmpwalk抓取设备端口的流量状况
    abc
    as
    网络质量IP获取脚本
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13318840.html
Copyright © 2011-2022 走看看