Python到C#RGBA值的转换不起作用

时间:2012-11-24 22:40:45

标签: c# python rgba

我目前正在将一些python代码转换为C#,而我遇到了RGBA C#库的问题

# Original Python Code:
    d = math.sqrt( (x - size/2.0)**2 + (y - size/2.0)**2 )
    rgbVal = int(200*d/md + 50)
    rgba = (0,0,0, 255 - rgbVal)
    img.putpixel((x,y), rgba)

// My C# Code
double d = Math.Sqrt(Math.Pow((x - DotSize / 2.0), 2) + Math.Pow((y - DotSize / 2.0), 2));
int rgbVal = (int) (200 * d / md + 50);
Color color = Color.FromArgb(255 - rgbVal, 0, 0, 0);     // ** ERROR **
img.SetPixel(x,y, color);

在代码d的两个实例中,d等于106并且md等于53.但是得到的rgbVal值是450。 这显然意味着255 - 450是-195,这会导致抛出错误,因为每个单独的值必须介于0到255之间。 任何人都知道如何解决这个问题。请注意,运行python和C#版本时数据是相同的。

1 个答案:

答案 0 :(得分:0)

您可以使用mod标准化值。

// I'm a little confused by your code, so it's this
Color color = Color.FromArgb(255 - ((-190 + 255) % 255), 0, 0, 0);
// or this...
Color color = Color.FromArgb(((-190 + 255) % 255), 0, 0, 0);