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 に答える