我目前正在将一些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#版本时数据是相同的。
答案 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);