Lyn*_*ite 8 c# wpf drawing gradient radial-gradients
我试图在WPF中为游戏绘制球形件.使用RadialGradientBrushs将片段绘制为Elipses.正如你在下面看到的那样,我的黑色部分看起来很棒,但很难让白色的部分有任何深度,而不会使它们看起来像灰色.

我目前正在使用:
private readonly Brush _whitePieceBrush = new RadialGradientBrush(Colors.Snow, Colors.Ivory);
private readonly Brush _blackPieceBrush = new RadialGradientBrush(Colors.DarkGray, Colors.Black);
...
using (DrawingContext dc = _piecesVisual.RenderOpen())
{
....
Brush brush = piece.Value.IsBlack ? _blackPieceBrush : _whitePieceBrush;
var pen = new Pen(new SolidColorBrush(Colors.Black), 0.5);
dc.DrawEllipse(brush, pen, new Point(posX, posY), 15, 15);
...
}
Run Code Online (Sandbox Code Playgroud)
白色碎片周围的黑色圆圈没有帮助,但没有它们,它看起来更糟.(如果我能找到一个好看的方法来绘制它们看起来更好,我会删除它)
Cle*_*ens 12
如下所示.焦点有点偏离中心,我发现它改善了空间印象.

<Ellipse Width="60" Height="60">
<Ellipse.Fill>
<RadialGradientBrush GradientOrigin="0.3,0.3">
<RadialGradientBrush.GradientStops>
<GradientStop Color="White" Offset="0"/>
<GradientStop Color="White" Offset="0.3"/>
<GradientStop Color="#FFF0F0F0" Offset="1"/>
</RadialGradientBrush.GradientStops>
</RadialGradientBrush>
</Ellipse.Fill>
</Ellipse>
Run Code Online (Sandbox Code Playgroud)
我试过:
private readonly Brush _whitePieceBrush = new RadialGradientBrush()
{
GradientStops = new GradientStopCollection
{
new GradientStop(Colors.WhiteSmoke,0.3),
new GradientStop(Colors.LightGray, 1.0),
}
};
private readonly Brush _whitePieceBorder = new SolidColorBrush(Colors.Silver);
Run Code Online (Sandbox Code Playgroud)

采纳克莱门斯的建议,让他们偏离中心: 他们有点偏离中心: 我认为这对黑人比白人更有帮助,但仍然有进步
private static readonly Point _lightSource = new Point(0.3, 0.35);
private readonly Brush _blackPieceBrush = new RadialGradientBrush(Colors.DarkGray, Colors.Black)
{
GradientOrigin = _lightSource
};
private readonly Brush _blackPieceBorder = new SolidColorBrush(Colors.Black);
private readonly Brush _whitePieceBrush = new RadialGradientBrush()
{
GradientOrigin = _lightSource,
GradientStops = new GradientStopCollection
{
new GradientStop(Colors.WhiteSmoke,0.3),
new GradientStop(Colors.LightGray, 1.0),
}
};
private readonly Brush _whitePieceBorder = new SolidColorBrush(Colors.Silver);
Run Code Online (Sandbox Code Playgroud)

| 归档时间: |
|
| 查看次数: |
3032 次 |
| 最近记录: |