透明位图

来源:互联网 发布:淘宝交易成功钱在哪 编辑:程序博客网 时间:2024/04/27 16:11

绘制"透明"位图的关键是创建一个"掩码"位图(mask bitmap),"掩码"位图是一个单色位图,它是位图中图像的一个单色剪影。在Windows编程中,绘图都要用到设备描述表,我们需创建两个内存设备描述表:位图设备描述表(image DC)和"掩码"位图设备描述表(mask DC)。位图设备描述表用来装入位图,而"掩码"位图设备描述表用来装入"掩码"位图。在"掩码"位图设备描述表中制作"掩码"位图的方式是:先创建一个单色的Bitmap,装入mask DC,然后,以"SRCCOPY"的方式将装有位图的位图设备描述表绘制(BitBlt)到mask DC上。这样,mask DC的显示平面中的位图即是"掩码"位图。

  一般情况下,绘制"透明"位图的实际操作步骤如下:

  1、设至待显示位图的背景颜色,也就是设置我们希望透明显示的位图颜色;

  2、位图设备描述表以"SRCINVERT"的方式绘制(BitBlt)到显示设备描述表上;

  3、"掩码"位图设备描述表以"SRCAND"的方式绘制(BitBlt)到显示设备描述表上;

  4、再将位图设备描述表以"SRCINVERT"的方式绘制(BitBlt)到显示设备描述表上。这样除"透明色"外的其余位图部分(图像部分)就被绘制到窗口上了。 

 

    SelectObject(mdc,hmanbmp);
   
    HBITMAP bitmapMask;
    bitmapMask=CreateBitmap(128,128,1, 1, NULL); //把mask位图装入mask DC
    SelectObject(hhdc,bitmapMask);
   
    //SetBkColor(mdc,RGB(255,255,255));
    BitBlt(hhdc,0,0,128,128,mdc,0,0,SRCCOPY);
    SetBkColor(mdc,RGB(255,255,255));
    BitBlt(hdc,500,50,100,119,mdc,0,0,SRCINVERT);
    BitBlt(hdc,500,50,100,119,hhdc,0,0,SRCAND);
    BitBlt(hdc,500,50,100,119,mdc,0,0,SRCINVERT);

 

 

原创粉丝点击