什么相当于 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 属性的主要内容,如果未能解决你的问题,请参考以下文章

VB6 与 C# 以不同顺序返回的 SQL 结果集

用VB6.0或VB.NET或C#做一个客户端,用来“限制用户只能在办公室访问Web系统”

VB和C#的区别是啥

vb 6.0 中有cookies操作的方法吗?

Vista 中的 VB6 .NET 互操作问题

如何在VB6.0中获取集合的键