我正在尝试创建一个简单的3D应用程序,允许用户创建一些3d数字并操纵它们:旋转,翻译等。
所以现在我想制作阴影,但是它计算了没有渐变的图形边框的颜色。所以它看起来有点异国情调。所以我可以计算顶点不同的亮度,但我不知道如何使用渐变来填充我的图形。例如,我有一个颜色相同但具有不同亮度值的三角形。那我应该怎么填写呢?
现在我画的是这样的:
private static readonly float[,] Floats;
static FillVisualizer()
{
Floats = BitmapHelper.GetBrightness(Resources.Shademap);
}
public override void Draw(Graphics graphics, VisualizableShape shape)
{
if (!shape.IsVisible)
return;
double x = shape.Normal.X*128 + 127;
double y = shape.Normal.Y*128 + 127;
var brightness = Floats[(int) x, (int) y];
var color = Color.FromArgb(255, (int) (Pen.Color.R*brightness), (int) (Pen.Color.G*brightness), (int) (Pen.Color.B*brightness));
graphics.FillPolygon(new SolidBrush(color), shape.Points.CastToPointF());
}
从 this url 中选择shademap和“magic constants”
所以我的造型上的所有顶点的亮度都是一样的,这就是为什么它在某些情况下看起来很糟糕的原因:
所以这里我使用的是FillPolygon,但它用一种颜色填充它,何时应该使用3(或4)个多边形点的亮度来填充它。
请告诉我,解决问题的最简单方法。
补充说:@bansi的图片,来自他网址的图片,我正在寻找。
所以我试着用它。我希望它会奏效。