簡體   English   中英

使用ToArgb()后跟FromArgb()不會產生原始顏色

[英]Using ToArgb() followed by FromArgb() does not result in the original color

這不起作用

        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());

Color.operator ==MSDN文檔Color.operator ==

此方法比Color結構的ARGB值更多。 它還對一些狀態標志進行了比較。 如果只想比較兩個Color結構的ARGB值,請使用ToArgb方法進行比較。

我猜測州旗是不同的。

它們不會相同,因為Color.Blue不等於你的顏色對象,它等於內部存儲的東西,“new Color(KnownColor.Blue);” 確切地說。

或者,這也有效,我認為它更直觀

    [Test]
    public void ColorTransform()
    {
        var argbInt = Color.LightCyan.ToArgb();
        Color backColor = Color.FromArgb(argbInt);
        Assert.AreEqual(Color.LightCyan.A, backColor.A);
        Assert.AreEqual(Color.LightCyan.B, backColor.B);
        Assert.AreEqual(Color.LightCyan.G, backColor.G);
        Assert.AreEqual(Color.LightCyan.R, backColor.R);
    }

我本來期望這與Assert.AreSame,因為拳擊與值類型,但AreEqual不應該有這個問題。

你可以添加哪種語言(我假設是C#)你的使用和測試框架?

Assert.AreEqual(true, Color.Blue == fred);是什么Assert.AreEqual(true, Color.Blue == fred); 造成?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM