2012-05-10 30 views
8

私は球形の球体をWPFで描画しようとしています。 RadialGradientBrushを使用した作品は、エリプスとして描かれています。 以下に見られるように、私の黒い部分は幻想的で、 ですが、灰色に見えなくても深みのある白いものを得るのは難しいです。白い部分の周りRadialGradientBrushで球体を描く

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

} 

黒丸は役立ちませんが、そのうちに、それがさらに悪化なります

enter image description here

私は現在使用しています。 (良いものを描くのが良い方法を見つけることができれば、私はそれを取り除くでしょう)

+0

が、それは私がそれを再生したいの楽しみ見えるとネジと思う:それは実行され、送信されたときにD – RhysW

+2

を(それがためのものです私はおそらくソースとインストーラ(メインポストにリンクします)へのリンクを張ります。 –

+0

ここではDream of Fieldsの言い換えは「コンパイルして、彼らが来る」 – 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

何らかの理由で私のためにとてもうまく出てこない。 私のコンピュータでは、明らかにバンディングがあります。 –

関連する問題