تقييم الموضوع :
  • 1 أصوات - بمعدل 5
  • 1
  • 2
  • 3
  • 4
  • 5
[تطبيق شامل] {11} - واجهة Smart صناعة الـ Donut Chart
#11
لفتة بسيطة اخوي شحادة ..

هذا الشارت لايسمى Pie ، لان الـ Pie حسب معلوماتي يكون بهذا الشكل :

الرد }}}
تم الشكر بواسطة: السندبااد , zinom , zinom
#12
فكرة كود الحذف الموجود في Draw فهمتها جيداً والحمد لله، وقد أجريت عليها عدة تجارب، وهذا الدرس لأهميته تابعته مراراً وطبقت جميع الحالات، والحمد لله لم أعد أواجه أي مشكلة وكل شيء إلى الآن واضح.


بالنسبة للفطيرة Pie كلامك في محله فيما يتعلق بالشكل، ولكن أظن أن الفكرة واحدة؛ فكلاهما يعطيانك نسبة محددة لجزء من المجموع العام، ولكن Pie تكون ممتلئة، كل جزء منها يشبه الفطيرة.

هذا كود تغيير لون أحد categories :
PHP كود :
        PieChart.categories.Item(0).ColorA = New SolidColorBrush(CType(ColorConverter.ConvertFromString("black"), Color)) 
فاعلم أنه لا إله إلا الله
الرد }}}
تم الشكر بواسطة: الشاكي لله , zinom , zinom
#13
(14-04-17, 11:58 AM)السندبااد كتب : فكرة كود الحذف الموجود في Draw فهمتها جيداً والحمد لله، وقد أجريت عليها عدة تجارب، وهذا الدرس لأهميته تابعته مراراً وطبقت جميع الحالات، والحمد لله لم أعد أواجه أي مشكلة وكل شيء إلى الآن واضح، ولكن يراودني سؤال حسب ردك: هل يمكن تغيير قيمة الـ Color لأحد الـ Categories فقط دون تغيير أي شيء آخر ؟


بالنسبة للفطيرة Pie كلامك في محله فيما يتعلق بالشكل، ولكن أظن أن الفكرة واحدة؛ فكلاهما يعطيانك نسبة محددة لجزء من المجموع العام، ولكن Pie تكون ممتلئة، كل جزء منها يشبه الفطيرة.

على العموم يمكن صناعة الـ PieChart بتغيير خاصية StrokeThickness ضمن الـ Style Smile

جربت تغييرها الى 125 ونجحت العملية ولكن الmargin بين الـ arcs يحتاج تعديل.  Big Grin

المهم ..

--

بالنسبة لسؤالك ، هل تقصد تغيير اللون في الران تايم ؟

فاذا كان كذلك ، انظر هذا الكود :

PHP كود :
 Private Sub button_Click(sender As ObjectAs RoutedEventArgsHandles button.Click
        Dim chart 
As DonutChart TryCast(CType(chartGeneralBorderGrid).Children.Cast(Of FrameworkElement)().Where(Function(aa.GetType() = GetType(DonutChart)).Single(), DonutChart)

 
       'حذف الكاتيغوريس
        PieChart.categories.Clear()
        PieChart.categories.Add(New Chart.DonutCategory() With {.NameA = "Visits", .ColorA = New SolidColorBrush(CType(ColorConverter.ConvertFromString("#FF60C6CF"), Color)), .PercentA = 40})
        PieChart.categories.Add(New Chart.DonutCategory() With {.NameA = "Members", .ColorA = New SolidColorBrush(CType(ColorConverter.ConvertFromString("#FF989CFF"), Color)), .PercentA = 25})
        PieChart.categories.Add(New Chart.DonutCategory() With {.NameA = "Sales", .ColorA = New SolidColorBrush(CType(ColorConverter.ConvertFromString("#FF59C5A0"), Color)), .PercentA = 23})
        PieChart.categories.Add(New Chart.DonutCategory() With {.NameA = "Lose", .ColorA = New SolidColorBrush(CType(ColorConverter.ConvertFromString("#FFF35958"), Color)), .PercentA = 12})


    End Sub

    Private Sub button1_Click(sender As Object, e As RoutedEventArgs) Handles button1.Click

        '
تغيير لون الكاتيغوري لووس
        PieChart
.categories.Where(Function(cc.NameA "Lose").Single().ColorA = New SolidColorBrush(Colors.Yellow)

 
   End Sub 


موفق  Heart
الرد }}}
تم الشكر بواسطة: zinom , zinom
#14
(14-04-17, 11:58 AM)السندبااد كتب :
هذا كود تغيير لون أحد categories :
PHP كود :
        PieChart.categories.Item(0).ColorA = New SolidColorBrush(CType(ColorConverter.ConvertFromString("black"), Color)) 


ماشاء الله عليك ياغالي دوما تجيب على اسئلتك بنفسك وهذا شيئ ممتاز جدا Smile


ربما لم اذكر في الفيديو ولكن هذه قوة الـ Notification في هذه التقنية

فاحنا قمنا بالاشتقاق من INotifyPropertyChanged لتطبيق هذا المفهوم وهو اعلام الClasses الاخرى عند حصول اي تغيير في قيم تلك الخصائص

فالـ BindingList والحدث ListChanged لن ينطلق الا بوجود INotifyPropertyChanged في عناصرها   Rolleyes


جمعة مباركة اخوي شحادة انت والمتابعين Smile
الرد }}}
تم الشكر بواسطة: السندبااد , sendbad100 , sendbad100 , zinom , zinom
#15
أكرمك الله وربنا يبارك بكل أيامك
كما تفضلت الأداة مرنة جداً، وقد قمت بتغيير قيمة StrokeThickness  إلى 125 والنتيجة كانت رائعة:
   


وبالنسبة لتغيير اللون هنالك طريقتان:
PHP كود :
        'تغيير لون حسب الرقم
        PieChart.categories.Item(0).ColorA = New SolidColorBrush(Colors.Black)

        '
تغيير لون حسب الاسم
        PieChart
.categories.Where(Function(cc.NameA "Lose").Single().ColorA = New SolidColorBrush(Colors.Yellow
فاعلم أنه لا إله إلا الله
الرد }}}
#16
أخي الحبيب الشاكي لله لاحظت بق بسيط في الأداة يحدث في الحالة التالية التي سأوضحها لك:
عندك أربعة أصناف هي:
Visits - Members - Sales - Lose
لنفرض إحدى الحالات التالية:
الحالة الأولى: إحدى الأصناف السابقة Percent كان = صفر.
Visits =40
Members =30
Sales =10
Lose = 0

الحالة الثانية: لنفرض أن هذه الأصناف مربوطة نسبها في قاعدة البيانات وفجأة صنف ما أو أكثر من صنف أصبحت نسبته صفر.
مثلاً هكذا:
Visits =40
Members =30
Sales =10
Lose = 0

أو هكذا:
Visits =40
Members =60
Sales =0
Lose = 0

أو هكذا:
Visits =100
Members =0
Sales =0
Lose = 0

في الحالتين السابقتين ستتشوه الأداة وستظهر بشكل مشوه
   

ما رأيك بهذا الشرط الذي أضفناه للدالة Draw ؟
بحيث يتم التنفيذ إذا كانت قيمة PercentA لا تساوي الصفر
أنا وجدت أنه يحل مشكلة البق:
   
PHP كود :
Private Sub Drow()
        currentAngle 0
        root
.Children.Cast(Of UIElement)().Where(Function(ee.GetType() = GetType(Arc)).ToList().ForEach(Sub(eroot.Children.Remove(e))
        For As Integer 0 To categories.Count 1
            Dim arc 
As DonutArc = New DonutArc(categories(i))
            arc.ArcElment.Stroke arc.ArcCatogry.ColorA
            arc
.ArcElment.StartAngle currentAngle

            
If arc.ArcCatogry.PercentA <> 0 Then
                arc
.ArcElment.EndAngle = (arc.ArcElment.StartAngle + (arc.ArcCatogry.PercentA 100) * 360) - 1
                root
.Children.Add(arc.ArcElment)
                currentAngle arc.ArcElment.EndAngle 1
            End 
If
        Next
    End Sub 
فاعلم أنه لا إله إلا الله
الرد }}}
تم الشكر بواسطة: zinom , zinom



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم