2014-04-25 57 views
0

我必須比較SFML.net中的兩種顏色。在C++中,這是可能的,因爲定義了==運算符。在SFML.net中Visual Studio不會讓我編譯代碼。如何解決這個問題? 錯誤: 1>E:\DB\Dropbox\Repozytoria\ARDSQL GUI\Sources\StatusBar.cs(91,17,91,70): error CS0019: Operator '==' cannot be applied to operands of type 'SFML.Graphics.Color' and 'SFML.Graphics.Color' 無法比較兩種SFML顏色

我的代碼:

if (base.barRectangle.FillColor == Color.Green) 
{ 
    ///Do something... 
} 
+0

什麼是'Color.Green'? 'System.Drawing.Color'? –

+0

SFML.Graphics.Color。兩者都來自SFML.Graphics。 –

回答

1

嘗試比較各個組件:

if (base.barRectangle.FillColor.r == Color.Green.r && 
    base.barRectangle.FillColor.g == Color.Green.g && 
    base.barRectangle.FillColor.b == Color.Green.b){ 
    ///Do something... 
} 

或者你可以嘗試編寫自己的顏色對比功能:

bool isEqualSFColors(SFML.Graphics.Color c1, SFML.Graphics.Color c2){ 
    if (c1.r == c2.r && 
     c1.g == c2.g && 
     c1.b == c2.b){ 
     return true; 
    } 
    return false; 
} 

請注意,我沒有包含alph一個比較(yourColor.a是你如何得到它)。

SFML也是開源的,所以你可以自由添加操作符重載,你的願望: http://msdn.microsoft.com/en-us/library/aa288467(v=vs.71).aspx

這也有可能是你使用的是舊版本/二進制,你發現。我沒有使用SFML.net,但我確定如果你抓取一個新的副本,可能已經有這個功能內置。

+0

謝謝,這工作! –