阅读教程

用VB绘制图形地Mask图

[日期:2008-06-07] 来源:  作者:
制作Mask图形的目的是为了把某一个图,去除其背景颜色,而将之画在另一个图上面,比如说有一张方形的BitMap图,上有一枝笔,而其背景是蓝色,如何将这笔画在另一张图上,而且笔原先的蓝背景不会画上去。
这个问题便得制造出笔的Mask图,与Invert的Mask图,该Mask图长像是:背景颜色(本例是蓝色)变成白色,其他颜色变成黑色,而Inver的Mask图则反之。

本范例使用GetMaskPic()来取得Mask图的Handle of Memory DC (hMaskDC),用
GetInvertMaskPic()来取得Invert Mask图的Handle of Memory DC(hInvertMaskDC),事实上,如果想要二者同时取得实在没有必要分成两个函式来做,只要一个就好了,
这里只是一个范例,告诉大家如果想要个别取得时该如何做啦。

我将这原理简单的说明一下:

1.hdcMono = CreateCompatibleDC(0)
产生一个Memory DC(与目前萤幕hDC相容),此时该MemoryDC绘的大小只有一个单色pixel
2.hbmpMono = CreateCompatibleBitmap(hdcMono, dx, dy)
产生一个大小是dx*dy 的Bitmap,而它的第一个叁数是Memory DC所以是单色的BitMap
3.hbmpOld = SelectObject(hdcMono, hbmpMono)
这个动作一做,该hdcMono的绘图区就变成hbmpMono了,也就是说可以想像hdcMono有一个大小是dx*dy(by pixels)的绘图区,在其上的画图会反映到hBmpMono之上
4.picBack.AutoRedraw = True
设定picBack.hDc指的是memory中的那份背景图
5.picBack.BackColor = RGB(255, 255, 255)
设picBack的背景是白色,如此也会同时也使Window background Color变成白色,这边要提出说明的是,vb的BackColor指的是什麽大家都知道,但Window中的BackGround Color
却不太相同,Window的 BackGround Color指的是在其上画线条或Print文字时,填充於线条 或文字外面的颜色,vb中一律使用Form/pictureBox的BackColor来填充,也就是说当BackColor变了时,同时也是让Window中所谓Background Color变,可以用以下程式一试
便知:



[1] [2] [3] [4] [5] [6] 下一页   
      
      使用百度搜索:用VB绘制图形地Mask图百度中搜索:用VB绘制图形地Mask图
阅读:
录入:华华

评论 】 【 推荐 】 【 打印
上一篇:VB雨滴式地显示图片
下一篇:取得VB中PictureBox内BitMap图地各个Byte
本文评论       全部评论
发表评论


点评: 字数
姓名:

 
搜一下


 
本周热门教程
 

关于我们 | 广告合作 | 法律声明 | 联系站长 | 网站地图 | 网站搜索 | | Top ↑
Copyright © 志伟教程资料网 Powered by zhiweinet 1.0
 本栏目提供:用VB绘制图形地Mask图