3

我目前正在将一些 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 等于 106,md 等于 53。但是,生成的 rgbVal 值是 450。这显然意味着 255 - 450 是 -195,这会导致抛出错误,因为每个单独的值都必须介于 0 到 255 之间。任何人都知道我该如何解决这个问题。请注意,运行 python 和 C# 版本时数据是相同的。

4

1 回答 1

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);
于 2012-11-24T23:01:38.500 回答