c# - 使用 RadialGradientBrush 绘制球体

标签 c# wpf drawing gradient radial-gradients

我正在尝试在 WPF 中为游戏绘制球形部分。 使用 RadialGradientBrushs 将片段绘制为椭圆。 正如你在下面看到的,我的黑色作品看起来棒极了, 但是很难让白色的有任何深度而不让它们看起来是灰色的。

enter image description here

我目前正在使用:

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);
    ...

}

白色 block 周围的黑色圆圈没有帮助,但没有它们,看起来更糟。 (如果我能找到更好的画法,我会把它去掉)

最佳答案

像下面这样的事情呢?焦点有点偏离中心,我发现这改善了空间印象。

enter image description here

<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>

关于c# - 使用 RadialGradientBrush 绘制球体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10535547/

相关文章:

c# - Configuration.GetValue<T> 返回 null 但 Bind 有效

wpf - 样式自动完成框错误指示器

WPF 工具包中的 WPF DataGrid 与 ListView - 有什么好处?

c# - 在 Silverlight 中使用 C# 以编程方式绘制

c# - 如何转换字符串值 Jul 28 00 :00 to datetime in c#

c# - 如何找到旧密码让用户更改它

c# - asp.net 改变.page 宽度

c# - 如何构建字符串以动态访问 .resx 资源

java - 绘制所有纹理翻转?

c - 更改窗口大小后重新绘制/刷新