如何处理System.Drawing.Color <--> System.Windows.Media.Color的歧义引用问题

3
我正在使用System.Drawing来填充矩形和绘制线条等内容。System.Drawing.Color对象仅有预定义的颜色列表,我想要使用RGB指定自己的颜色。因此,我添加了System.Windows.Media命名空间,现在所有对"Color"的引用都显示为模棱两可的引用。
我理解其中的原因。但是我想知道是否有更好的解决方案,而不是进行如此操作。
System.Windows.Media.Color colorVariableName;

无论我在哪里引用颜色变量。


据我记得,您可以使用RGB值构建一个新的System.Drawing.Color - BoltClock
4个回答

5

您可以在顶部使用别名 alias your usings,这样您可以像下面这样说:

using MediaColor = System.Windows.Media.Color

而且你将能够说

MediaColor colorVariableName

这个答案是正确的,因为它回答了问题。虽然另一个答案中的讨论告诉我在这种情况下不需要使用它,但我还是很高兴知道了。 :) - Almo

4

使用 System.Drawing.Color,您可以进行以下操作:

Color c = Color.FromArgb(255,255,255);

从您自己的R、G和B值初始化颜色,也许可以跳过System.Windows.Media.Color


没有“using System.Windows.Media”,就无法定义Color.FromArgb。 - Almo
@Almo 不是未定义的。它在这里 http://msdn.microsoft.com/en-us/library/cce5h557.aspx - Bala R
啊!我想调用m_color.FromArgb(),结果却调用了静态的Color.FromArgb()。谢谢! - Almo
@BalaR - 他的意思是他必须使用 using System.Drawing 和 Color.FromArgb 或者 System.Drawing.Color.FromArgb,当然我不确定哪一个有问题。 - Security Hound
@Ramhound,您可以使用其中任何一个,但要同时使用两个,您必须定义一个别名。在他的情况下,看起来他只需要使用System.Drawing.Color,跳过System.Windows.Media.Color。 - Bala R
是的,我可以跳过 Media.Color。我(可耻地)没有注意到 FromArgb 是一个静态调用,而不是实例调用。这是因为太依赖自动完成了。 - Almo

1
使用Color.FromArgb(r,g,b)将RGB转换为System.Color。其中,r、g和b是整数。

0
另一个选项是在using子句中给命名空间取别名,例如:
using System.Windows.Media = med;

然后你可以通过以下方式访问颜色:

med.Blue

此外,如果你只对特定的类感兴趣,你也可以在 using 子句中为它指定别名。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接