使用 ToArgb() 后跟 FromArgb() 不会产生原始颜色
这不起作用 有
int blueInt = Color.Blue.ToArgb();
Color fred = Color.FromArgb(blueInt);
Assert.AreEqual(Color.Blue,fred);
什么建议吗?
[编辑]
我正在使用 NUnit 并且输出失败
:
预期:颜色 [蓝色]
但是是:颜色 [A=255,R=0,G=0,B=255]
[编辑]
这有效!
int blueInt = Color.Blue.ToArgb();
Color fred = Color.FromArgb(blueInt);
Assert.AreEqual(Color.Blue.ToArgb(),fred.ToArgb());
This does not work
int blueInt = Color.Blue.ToArgb();
Color fred = Color.FromArgb(blueInt);
Assert.AreEqual(Color.Blue,fred);
Any suggestions?
[Edit]
I'm using NUnit and the output is
failed:
Expected: Color [Blue]
But was: Color [A=255, R=0, G=0, B=255]
[Edit]
This works!
int blueInt = Color.Blue.ToArgb();
Color fred = Color.FromArgb(blueInt);
Assert.AreEqual(Color.Blue.ToArgb(),fred.ToArgb());
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
来自 关于
Color.operator = 的 MSDN 文档=
:我猜州旗是不同的。
From the MSDN documentation on
Color.operator ==
:I'm guessing the state flags are different.
它们不会相同,因为 Color.Blue 不等于您的颜色对象,它等于内部存储的内容,即“new Color(KnownColor.Blue);” 准确地说。
They won't equal the same, as Color.Blue doesn't equal your colour object, it equals something stored internally, a "new Color(KnownColor.Blue);" to be exact.
由于值类型的装箱,我预计 Assert.AreSame 会出现这种情况,但 AreEqual 不应该有这个问题。
您能否添加您使用的语言(我假设是 C#)以及测试框架?
Assert.AreEqual(true, Color.Blue == fred);
会产生什么结果?I would have expected this with Assert.AreSame because of the boxing with the value types, but AreEqual should not have this problem.
Could you add which language (I'm assuming C#) your using and which testing framework?
What does
Assert.AreEqual(true, Color.Blue == fred);
result in?或者,这也可行,而且我认为它更直观
Alternatively, this also works, and I think it's more intuitive