2012-05-10 23 views
8

के साथ ड्राइंग क्षेत्रों को डब्ल्यूपीएफ में एक गेम के लिए गोलाकार टुकड़े खींचने की कोशिश कर रहा हूं। टुकड़े रेडियलग्रेडेंट ब्रश के साथ एलिप्स के रूप में खींचे जाते हैं। जैसा कि आप नीचे देख सकते हैं, मेरे काले टुकड़े शानदार लगते हैं, लेकिन सफेद लोगों को भूरे रंग के बिना गहराई से देखना मुश्किल है।रेडियल ग्रेडिएंटब्रश

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

पेंच है कि यह मजेदार मैं इसे खेलने चाहता हूँ लग रहा है लगता है: डी – RhysW

+2

जब यह किया जाता है और प्रस्तुत (यह एक के लिए है यूनी प्रोजेक्ट), मैं शायद स्रोत और इंस्टॉलर (मुख्य पोस्ट में लिंक करूंगा) –

+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

किसी कारण से मेरे लिए इतना अच्छा नहीं आया है। वास्तव में स्पष्ट बैंडिंग, मेरे कंप्यूटर पर –