2014-04-25 56 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

谢谢,这工作! –