zoukankan      html  css  js  c++  java
  • 透明位图的实现

    透明位图的显示
    包含透明色的位图的绘制方法有多种,最简单的方法是调用现成的函数: TransparentBlt,也可以通过自己的代码实现类似TransparentBlt的功能,实现过程也有两种形式,一种是事先做一张掩码位图,另 一种是动态生成掩码位图。本文将介绍动态生成掩码位图绘制具有透明区域位图的方法。

    一、TransparentBlt 函数的使用

    TransparentBlt 函数在Windows98/Windows2000以上版本运行,系统中需要包含 Msimg32.dll,使用时可以链接 Msimg32.lib。
    Windows98下的TransparentBlt会产生资源泄漏,所以不建议在WIN98下使用该函数。
    TransparentBlt函数原型如下:

    BOOL TransparentBlt(
    HDC hdcDest, // 目标DC
    int nXOriginDest, // 目标X偏移
    int nYOriginDest, // 目标Y偏移
    int nWidthDest, // 目标宽度
    int hHeightDest, // 目标高度
    HDC hdcSrc, // 源DC
    int nXOriginSrc, // 源X起点
    int nYOriginSrc, // 源Y起点
    int nWidthSrc, // 源宽度
    int nHeightSrc, // 源高度
    UINT crTransparent // 透明色,COLORREF类型
    );

    使用示例(在对话框的OnPaint函数中添加):
    CPaintDC dc(this); //获得对话框的DC
    //载入位图资源,开始透明绘制
    CBitmap SampleBMP;
    BOOL bSuccess = SampleBMP.LoadBitmap(IDB_BITMAP2);
    CDC ImageDC;
    ImageDC.CreateCompatibleDC(&dc);
    CBitmap *pOldImageBMP = ImageDC.SelectObject(&SampleBMP);
    TransparentBlt(dc.m_hDC, 0, 0, 48, 48, ImageDC.m_hDC, 0, 0, 48, 48, RGB(0x00,0x00,0x00));
    ImageDC.SelectObject(pOldImageBMP);

    二、补充内容
    有关透明位图实现原理的文章参看附件文件夹中的透明位图显示.mht文件。
  • 相关阅读:
    C. Mobile phones
    star
    敌兵不正
    Java数据类型
    Eclipse的使用及Java程序的标识符和关键字
    Python学习笔记字符串操作之小结之表格打印
    HTML学习笔记7----图像
    Python学习笔记字符串操作之小结之Wiki标记中添加无序列表
    Python学习笔记字符串操作之pyperclip模块拷贝粘贴字符串
    Python学习笔记字符串操作之strip()、rstrip()和lstrip()方法删除空白格
  • 原文地址:https://www.cnblogs.com/super119/p/2011334.html
Copyright © 2011-2022 走看看