سؤال

بدأت اللعب مع WPF و أردت أن ألفت عجلة الألوان في نموذج.

في البداية كنت أحاول أن استخدام LinearGradientBrush على ArcSegment مثل هذا:

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

دون جدوى, لأن التدرج كان لا يزال الأفقي.

فكرة أخرى هي ما يجب أن ينحني الخط بطريقة أو بأخرى بعد تطبيق التدرج.ولكن أنا لا يمكن العثور مناسب تحويل.

إذا كان هناك أي معيار تحويل هل من الممكن لجعل العرف تحويل ؟ أو ينبغي أن يوجه عجلة الألوان من قبل بكسل ؟

أي أفكار من فضلك.

هل كانت مفيدة؟

المحلول

هذه المكتبة لديها تظليل بكسل التي تعتمد عجلات اللون

وعينة XAML:

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

لاحظ أن القطع الناقص يجب أن يكون فرشاة تعيين على Fill لهذا العمل، يمكن أن يكون أي لون.

نصائح أخرى

هنا مثال آخر من silverlight: http://asyrovprog.host22.com/colorwheel.html.شفرة المصدر هو الموجود هنا:timeline.codeplex.com بموجب ترخيص bsd.

ما كنت تبحث عن التدرج فرشاة . للأسف، انها ليست متوفرة بعد في برنامج الأغذية العالمي (ولكن هو في GDI +). ربما في إصدار مستقبلي ...

ولدي فكرة عن كيفية الحصول على عجلة الألوان تقريبية.

ووصف مستوى عال من أنه سيكون باستخدام التدرجات الخطية (مستطيلات) التي يتم تدويرها وترجمتها إلى جعل مضلع منتظم الذي سمك هو أوسع بكثير من عرض حلقة المطلوب. يمكنك ثم "قطع" على شكل حلقة من هذا واستخدامه بمثابة عجلة الألوان الخاصة بك.

وعجلة اللون لديها العديد من الألوان الرئيسية (الأحمر والأخضر والأزرق والأصفر، الخ). سوف تحتاج أولا لتحديد قياس درجة من بعض خط الأساس التعسفي. على سبيل المثال، الأحمر هو في 0 راديان، الأزرق هو في راديان بي، الخ يمكنك أيضا تحديد دائرة نصف قطرها الداخلي والخارجي للحلقة. باستخدام علم حساب المثلثات، يمكنك المشي حول الحلبة رسم مستطيل مع الانحدار الخطي من اللون الذي يبدأ يوم للون المجاور المقبل. وعرض المستطيل يجب أن تكون أكبر من عرض الحلقة (سترى لماذا في وقت لاحق)، وسوف المستطيل تحتاج إلى أن تكون استدارة أن يكون الظل الى دائرة في منتصفه.

وبمجرد الانتهاء سيكون لديك "المضلع اللون" (وهو مصطلح أنا فقط مكونة). يمكنك ثم استخراج شكل حلقة من هذا المضلع مثل قطع الكعكة يفعل مع العجين. لن يكون هناك أكثر من طريقة للقيام بذلك. ببساطة رسم دائرة شغله من المركز إلى دائرة نصف قطرها الداخلي مع الخلفية سوف تتخلص على الجزء الأوسط. إن الجزء الخارجي سيكون أكثر صعوبة. أنا لا أعرف ما إذا كنت تستطيع أن تفعل ذلك في برنامج الأغذية العالمي ولكن ما كنت بحاجة إلى القيام به هو توليد قناع عبارة عن دائرة من المركز إلى الحافة الخارجية للحلقة. وسيكون من دائرة بيضاء على خلفية سوداء. يمكنك ثم "AND" مع صورة للتخلص من خارج المضلع.

وليس مثاليا ولكن سيبدو معقول أظن. الكثير من علم حساب المثلثات!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top