2012-05-10 45 views
8

我想画的球形块的游戏,在WPF。 碎片与RadialGradientBrushs的Elipses一样。 正如你可以看到下面,我的黑片看起来很棒, 但它是很难得到有任何深度的白色的而没有让他们看起来是灰色。绘制球体与放射渐变

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

} 

周围的白块的黑圈没有帮助,但他们出来,它看起来更糟。 (如果我能找到吸引他们看起来更好的一个很好的方式,我会删除它)

+0

螺钉看起来很好玩我想玩它:d – RhysW

+2

当它完成并提交(它是一个UNI项目),我可能会提出了一个链接到源和安装程序(将链接到主后) –

+0

这里复述壮志雄心,但“编译它,他们就来了” – RhysW

回答

2

我想:

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

Board Picture


以克莱门斯的建议,并让他们偏离中心: 有了他们有点偏离中心: 我认为这有助于比白黑,但仍和改进

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

enter image description here

+0

看起来很完美。你是否也试图让它偏离中心? – Clemens

+0

是的,我确实(实际上在第一张图片上传后) –

12

什么类似于下面的东西。焦点有点偏离中心,我发现这改善了空间印象。

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

出于某种原因,对我来说不会如此出色。 真的很明显条纹,在我的电脑上 –