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'

我的代码:

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

1 回答 1

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;
}

请注意,我没有将 alpha 包含在比较中(yourColor.a 是您获得它的方式)。

SFML 也是开源的,因此您可以自由添加所需的运算符重载:http: //msdn.microsoft.com/en-us/library/aa288467 (v=vs.71).aspx

您也可能使用的是您找到的旧版本/二进制文件。我没有使用过 SFML.net,但我敢肯定,如果您获取更新的副本,可能已经内置了此功能。

于 2014-05-21T00:15:47.153 回答