現在、単純なペイント ツールを作成しようとしていますが、問題が発生したか、さらに提案が必要な場合があります。
ブラシを作成しようとしているので、特定のピクセル「中心」をペイントすると、近くのピクセルもペイントされます。
例えば:
1 pixel (center point)
[ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ]
[ ][ ][*][ ][ ]
[ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ]
2 pixel:
[ ][ ][ ][ ][ ]
[ ][ ][*][ ][ ]
[ ][*][*][*][ ]
[ ][ ][*][ ][ ]
[ ][ ][ ][ ][ ]
3 pixels:
[ ][ ][*][ ][ ]
[ ][*][*][*][ ]
[*][*][*][*][*]
[ ][*][*][*][ ]
[ ][ ][*][ ][ ]
また、中心点のみが色の 100% である必要があります。後で元の色を取り、少しフェードアウトするにはどうすればよいですか。
例:
1 ピクセル、100% カラー
2 ピクセル、中心点は色の 100%、近くのピクセルはわずかに色あせているか (50%)
10 ピクセル、中心点は色の 100%、中心点から最も離れたピクセルは、元の色が最も薄くなるはずです。
そのため、近くの色を計算するアルゴリズムと、ブラシ パターンを作成するアルゴリズムです。
助言がありますか?
Color Intensity メソッドの実装 (機能しません) Update 1: Math.Pow(x, y) に変更 - 遅く、機能しません
public static Color GetColorIntensity(Color c, double r, Point position, Point centerPosition)
{
double distance = Math.Sqrt((Math.Pow(position.X, 2)) + (Math.Pow(position.Y, 2)));
double relative_distance = distance / r;
double alpha = (1.0 - relative_distance);
return Color.FromArgb((int)alpha, c.R, c.G, c.B);
}