我必须比较SFML.net中的两种颜色。在C++中,这是可能的,因为有定义的==操作符。在SFML.net中,Visual不允许我编译代码。如何解决这个问题?错误: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...
}发布于 2014-05-21 00:15:47
试着比较各个组件:
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 (你的Col.a是如何得到的)。
SFML也是开源的,所以您可以自由地添加您想要的操作符重载:http://msdn.microsoft.com/en-us/library/aa288467(v=vs.71).aspx。
您还可能正在使用您找到的旧版本/二进制文件。我没有使用SFML.net,但我相信如果您获得一个较新的副本,可能已经有了内置的特性。
https://stackoverflow.com/questions/23287354
复制相似问题