将 System.Drawing.Color 转换为 System.Windows.Media.Color

33
System.Drawing.Color drawRedColor = System.Drawing.Color.Red;
System.Windows.Media.Color mediaColor = ?drawRedColor.ToMediaColor();?

8
@serhio - 请在以后用文字陈述你的问题。 - Oded
只有一些人会看到这个问题,而不是看到一个问题(因此可能会投票关闭为“不是一个真正的问题”)。不要忘记我们也希望这些问题被谷歌发现,提出一个实际的问题将有助于让这个问题在搜索结果中得到更好的展示。 - Oded
@Oded:我在这里没有找到需要评论的事情。 - serhio
@Oded:你认为这不是一个问题吗? - serhio
你看到了关闭投票吗? - Oded
@Oded,好的,伙计,我想我们彼此理解了:) - serhio
2个回答

59

你觉得这样怎么样:

using MColor = System.Windows.Media.Color;
using DColor = System.Drawing.Color;
...

public static MColor ToMediaColor(this DColor color)
{
   return MColor.FromArgb(color.A, color.R, color.G, color.B);
}

编辑:修复了 ARGB 的“解压缩”问题。


@serhio: 你是对的,抱歉。现在怎么样? - Ani
3
@Ani:这里真的不需要使用“using” :) - serhio
2
@serhio:我同意。这主要是为了防止出现水平滚动条。 :) - Ani
当输入为Color.Empty时会发生什么? - Mike Post
@Mike Post:正如预期的那样,运行良好。Console.WriteLine(System.Drawing.Color.Empty.ToMediaColor()); - 输出:#00000000 - Ani
显示剩余2条评论

8
System.Windows.Media.Color mediaColor = System.Windows.Media.Color.FromRgb(Color.Red.R, Color.Red.G, Color.Red.B);

不正确的方法,我不需要转换红色,而是一个颜色变量 :) - serhio
6
嗯...也许你应该在回答上做更多的推论,就像我在“问题”上推论一样 :) - Kell

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