今天一朋友问我怎么实现PS中对指定区域进行填充的效果(这家伙在用C#做一个需要众多图形处理的项目)
据我所知,Graphics有个属性Clip :获取或设置 Region,该对象限定此 Graphics 的绘图区域。
好吧,这里我们不用这个方式,而是用另外一个位图(mask)来做有效区域标记。
这种做法在很多图形库中都是存在的(比如openCV)。
效果
纹理贴图 和 mask:
效果图:
左图是纹理贴图,右图是纯填充。
实现
首先需要准备一个mask
究竟mask是个什么东西呢?这里的mask 是一个深度为8的位图且只有两个颜色索引的(0x00 , 0xff)黑白图像,用黑色表示非作用域。这里我用PS随便画了一个
色阶如下:
代码如下:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;