我目前正在尝试创建一个简单的绘画工具,但我遇到了一个问题,或者可能需要更多建议。
我正在尝试创建一个画笔,所以当我绘制某个像素“中心”时,它也会绘制附近的像素。
例如:
1 pixel (center point)
[ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ]
[ ][ ][*][ ][ ]
[ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ]
2 pixel:
[ ][ ][ ][ ][ ]
[ ][ ][*][ ][ ]
[ ][*][*][*][ ]
[ ][ ][*][ ][ ]
[ ][ ][ ][ ][ ]
3 pixels:
[ ][ ][*][ ][ ]
[ ][*][*][*][ ]
[*][*][*][*][*]
[ ][*][*][*][ ]
[ ][ ][*][ ][ ]
此外,只有中心点应该是 100% 的颜色。我以后怎样才能取原来的颜色并稍微淡出它。
例子:
1 像素,100% 颜色
2 像素,中心点 100% 的颜色,附近的像素略微褪色或可能 (50%)
10个像素,中心点100%的颜色,离中心点最远的像素应该是原色最淡的。
因此,一种计算附近颜色的算法和一种制作画笔图案的算法。
有什么建议么?
颜色强度方法的实现(不起作用)更新 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);
}