2009-05-05 9 views
6

मैंने WPF के साथ खेलना शुरू किया और एक फॉर्म पर color wheel आकर्षित करना चाहता था।WPF एप्लिकेशन में रंगीन पहिया कैसे आकर्षित करें?

सबसे पहले मैं इस तरह ArcSegment पर LinearGradientBrush का उपयोग करने के लिए tryed:

<Path StrokeThickness="35" Height="150" Width="150"> 
    <Path.Stroke> 
     <LinearGradientBrush StartPoint="0,0" EndPoint="1,0"> 
      <GradientStop Color="Red" Offset="0.15" /> 
      <GradientStop Color="Orange" Offset="0.2" /> 
      <GradientStop Color="Yellow" Offset="0.35" /> 
      <GradientStop Color="Green" Offset="0.5" /> 
      <GradientStop Color="Blue" Offset="0.65" /> 
      <GradientStop Color="Indigo" Offset="0.75" /> 
      <GradientStop Color="Violet" Offset="0.9" /> 
     </LinearGradientBrush> 
    </Path.Stroke> 
    <Path.Data> 
     <PathGeometry > 
      <PathFigure IsClosed="True" StartPoint="25,70"> 
       <ArcSegment Point="25,71" IsLargeArc="True" 
        Size="50,50" SweepDirection="Clockwise" /> 
      </PathFigure> 
     </PathGeometry> 
    </Path.Data> 
</Path> 

असफल, क्योंकि ढाल अभी भी क्षैतिज था।

एक और विचार यह है कि मुझे ढाल लगाने के बाद किसी भी तरह लाइन को मोड़ना है। लेकिन मुझे अनुचित परिवर्तन नहीं मिल रहा है।

यदि कोई मानक परिवर्तन नहीं है तो क्या कस्टम ट्रांसफॉर्म करना संभव है? या मुझे पिक्सेल द्वारा रंगीन पहिया खींचना चाहिए?

कोई विचार, कृपया।

उत्तर

1

This library has pixel shaders that draw color wheels

नमूना XAML:

<Ellipse Width="300" 
     Height="300" 
     Fill="White"> 
    <Ellipse.Effect> 
     <effects:HsvWheelEffect /> 
    </Ellipse.Effect> 
</Ellipse> 

ध्यान दें कि अंडाकार एक ब्रश इस के लिए Fill पर सेट काम करना चाहिए, किसी भी रंग हो सकता है।

2

जो आप खोज रहे हैं वह Path Gradient Brush है। अफसोस की बात है, यह अभी तक डब्ल्यूपीएफ में उपलब्ध नहीं है (लेकिन यह जीडीआई + में है)। शायद भविष्य के संस्करण में ...

मुझे अनुमान है कि एक अनुमानित रंगीन चक्र कैसे प्राप्त किया जाए।

इसका एक उच्च स्तरीय विवरण रैखिक ग्रेडियेंट्स (आयताकार) का उपयोग करेगा जो घुमाए जाते हैं और एक नियमित बहुभुज बनाने के लिए अनुवादित होते हैं जिनकी मोटाई वांछित अंगूठी चौड़ाई से अधिक व्यापक होती है। फिर आप इससे एक अंगूठी आकार काट लें और इसे अपने रंगीन चक्र के रूप में उपयोग करें।

एक रंगीन पहिया में कई प्रमुख रंग होते हैं (लाल, हरा, नीला, पीला, आदि)। आपको पहले कुछ मनमानी आधार रेखा से डिग्री माप को परिभाषित करने की आवश्यकता होगी। उदाहरण के लिए, लाल 0 रेडियंस पर है, नीला पीआई रेडियंस आदि है। आप अंगूठी के लिए एक आंतरिक और बाहरी त्रिज्या भी परिभाषित करते हैं। ट्रिगर का उपयोग करके, आप अंगूठी ड्राइंग आयत के चारों ओर घूमते हैं जो रंग के बाद से आप अगले रंग के रंग से शुरू होते हैं। आयताकार की चौड़ाई अंगूठी की चौड़ाई से बड़ी होनी चाहिए (आप बाद में क्यों देखेंगे) और आयताकार को इसके मध्य बिंदु पर सर्कल में टेंगेंट होने के लिए घूमने की आवश्यकता होगी।

एक बार समाप्त हो जाने पर आपके पास "रंग बहुभुज" (एक शब्द जिसे मैंने अभी बनाया है) होगा। फिर आप इस बहुभुज से एक अंगूठी का आकार निकालते हैं जैसे एक कुकी कटर आटा के साथ करता है। ऐसा करने के एक से अधिक तरीके होंगे। बस केंद्र से एक भरे सर्कल को पृष्ठभूमि के साथ आंतरिक त्रिज्या में खींचकर मध्य भाग पर छुटकारा पा जाएगा। बाहरी हिस्सा और अधिक कठिन होगा। मुझे नहीं पता कि क्या आप इसे WPF में कर सकते हैं लेकिन आपको जो करना होगा वह एक मुखौटा उत्पन्न करता है जो कि केंद्र से अंगूठी के बाहरी किनारे तक एक सर्कल है। यह एक काला पृष्ठभूमि पर एक सफेद सर्कल होगा। फिर आप पॉलीगॉन के बाहर से छुटकारा पाने के लिए छवि के साथ "और"।

सही नहीं है लेकिन यह उचित लगेगा कि मुझे संदेह है। ट्रिगर के बहुत सारे!

3

चांदी की रोशनी से अभी तक एक और उदाहरण है: http://asyrovprog.host22.com/colorwheel.html। स्रोत कोड यहां स्थित है: bsd लाइसेंस के तहत timeline.codeplex.com।

+0

बहुत धन्यवाद! दुर्भाग्यवश मैं डेमो को देखने में सक्षम नहीं हूं क्योंकि सिल्वरलाइट 5 बीटा में है, लेकिन आपका उत्तर जल्द ही स्वीकार किया जा रहा है। –

संबंधित मुद्दे