C ++ / CLI:应用Alpha阈值的ColorMatrix
有人会知道如何指定一个ColorMatrix(特别是C ++ / CLI中的System :: Drawing :: Imaging :: ColorMatrix)来设置alpha阈值吗? 例如,如果我使用10(10/255)作为阈值,那么RGBA Alpha为10或更小的任何像素都将具有0.0f Alpha,并且上面的每个像素都会得到1.0f。
我试图在二维场景编辑器中实现ColorID拾取,因为我厌倦了使用当前难以实施的方法来反转我的绘制转换,以确定鼠标指向的给定位图的哪个像素。 所以我想要做的就是做一个像OpenGL一样的ColorID渲染传递,如下所述http://content.gpwiki.org/index.php/OpenGL_Selection_Using_Unique_Color_IDs然而,我不能仅仅比较屏幕上位图的位置,因为大多数位图包括大量的白色空间,我不希望被鼠标采摘挑选出来,这使我留下了颜色挑选。
现在我的ColorMatrix看起来像
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 1 0
R G B 0 1
遵循Hans对GDI +的回答:将所有像素设置为给定的颜色,同时保留现有的alpha值,但是我希望它也对Alpha组件应用阈值(如果使用ColorMatrix,甚至可能)
也许你正在寻找ImageAttributes.SetThreshold
方法。