什么相当于 C# 中 VB6.0 的 MaskColor 属性
Posted
技术标签:
【中文标题】什么相当于 C# 中 VB6.0 的 MaskColor 属性【英文标题】:What is equivalent of VB6.0's MaskColor property in C# 【发布时间】:2011-10-31 02:13:03 【问题描述】:VB 6.0 中的MaskColor
属性用于去除Image
的背景颜色。我如何在 C# 中做同样的事情?
【问题讨论】:
链接到 VB6 文档,以确保完整性。 msdn.microsoft.com/en-us/library/aa239018(v=vs.60).aspx 【参考方案1】:您可以将MakeTransparent(Color color) 用于位图图像。示例:
//convert the red color in the image into transparent.
((Bitmap)BackgroundImage).MakeTransparent(Color.Red);
【讨论】:
我认为要求左下角的像素是您定位的颜色。我喜欢在这里学习新东西! @Dev 欢迎您,如果它正确回答了您的问题,请不要忘记将此答案标记为accepted answer,以便其他人知道您的问题实际上是如何解决的【参考方案2】:我不认为有任何直接的等价物。
过去,我通过使用 ColorMap 类将我的背景颜色映射到 Color.Transparent 使其工作。然后我创建一个 ImageAttributes 对象并调用 SetRemapTable() 函数并将我的 ColorMap 传递给它。然后通过将 ImageAttributes 传递给 DrawImage 方法来重绘图像。
编辑:
Jalal 发布了一种更简单的纯色方法。我仔细查看了使用上述方法的代码,我将多个相同基色的阴影映射到透明。
【讨论】:
哇,这是一个很长的转折;) 已经好几年了,但我记得这样做并且仍然有代码。原来我将不止一种颜色的阴影映射到透明。对于单一纯色,您的方式显然更胜一筹。 +1,虽然这很有用,我不知道这里的性能,但你可以多次调用MakeTrasparent
方法,为你想在同一个位图中透明的每种颜色
看看 MakeTransparent 在做什么会很有趣。当我明天更清醒时,我可能会研究一下:)以上是关于什么相当于 C# 中 VB6.0 的 MaskColor 属性的主要内容,如果未能解决你的问题,请参考以下文章