14-04-17, 11:47 AM
الصفحات : 1 2
14-04-17, 11:58 AM
فكرة كود الحذف الموجود في Draw فهمتها جيداً والحمد لله، وقد أجريت عليها عدة تجارب، وهذا الدرس لأهميته تابعته مراراً وطبقت جميع الحالات، والحمد لله لم أعد أواجه أي مشكلة وكل شيء إلى الآن واضح.
بالنسبة للفطيرة Pie كلامك في محله فيما يتعلق بالشكل، ولكن أظن أن الفكرة واحدة؛ فكلاهما يعطيانك نسبة محددة لجزء من المجموع العام، ولكن Pie تكون ممتلئة، كل جزء منها يشبه الفطيرة.
بالنسبة للفطيرة Pie كلامك في محله فيما يتعلق بالشكل، ولكن أظن أن الفكرة واحدة؛ فكلاهما يعطيانك نسبة محددة لجزء من المجموع العام، ولكن Pie تكون ممتلئة، كل جزء منها يشبه الفطيرة.
هذا كود تغيير لون أحد categories :
PHP كود :
PieChart.categories.Item(0).ColorA = New SolidColorBrush(CType(ColorConverter.ConvertFromString("black"), Color))
14-04-17, 12:10 PM
(14-04-17, 11:58 AM)السندبااد كتب : [ -> ]فكرة كود الحذف الموجود في Draw فهمتها جيداً والحمد لله، وقد أجريت عليها عدة تجارب، وهذا الدرس لأهميته تابعته مراراً وطبقت جميع الحالات، والحمد لله لم أعد أواجه أي مشكلة وكل شيء إلى الآن واضح، ولكن يراودني سؤال حسب ردك: هل يمكن تغيير قيمة الـ Color لأحد الـ Categories فقط دون تغيير أي شيء آخر ؟
بالنسبة للفطيرة Pie كلامك في محله فيما يتعلق بالشكل، ولكن أظن أن الفكرة واحدة؛ فكلاهما يعطيانك نسبة محددة لجزء من المجموع العام، ولكن Pie تكون ممتلئة، كل جزء منها يشبه الفطيرة.
على العموم يمكن صناعة الـ PieChart بتغيير خاصية StrokeThickness ضمن الـ Style

جربت تغييرها الى 125 ونجحت العملية ولكن الmargin بين الـ arcs يحتاج تعديل.
المهم ..
--
بالنسبة لسؤالك ، هل تقصد تغيير اللون في الران تايم ؟
فاذا كان كذلك ، انظر هذا الكود :
PHP كود :
Private Sub button_Click(sender As Object, e As RoutedEventArgs) Handles button.Click
Dim chart As DonutChart = TryCast(CType(chartGeneralBorder, Grid).Children.Cast(Of FrameworkElement)().Where(Function(a) a.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(c) c.NameA = "Lose").Single().ColorA = New SolidColorBrush(Colors.Yellow)
End Sub
موفق

14-04-17, 12:15 PM
(14-04-17, 11:58 AM)السندبااد كتب : [ -> ]
هذا كود تغيير لون أحد categories :PHP كود :
PieChart.categories.Item(0).ColorA = New SolidColorBrush(CType(ColorConverter.ConvertFromString("black"), Color))
ماشاء الله عليك ياغالي دوما تجيب على اسئلتك بنفسك وهذا شيئ ممتاز جدا

ربما لم اذكر في الفيديو ولكن هذه قوة الـ Notification في هذه التقنية
فاحنا قمنا بالاشتقاق من INotifyPropertyChanged لتطبيق هذا المفهوم وهو اعلام الClasses الاخرى عند حصول اي تغيير في قيم تلك الخصائص
فالـ BindingList والحدث ListChanged لن ينطلق الا بوجود INotifyPropertyChanged في عناصرها
جمعة مباركة اخوي شحادة انت والمتابعين

14-04-17, 12:26 PM
أكرمك الله وربنا يبارك بكل أيامك
كما تفضلت الأداة مرنة جداً، وقد قمت بتغيير قيمة StrokeThickness إلى 125 والنتيجة كانت رائعة:
[attachment=13876]
كما تفضلت الأداة مرنة جداً، وقد قمت بتغيير قيمة StrokeThickness إلى 125 والنتيجة كانت رائعة:
[attachment=13876]
وبالنسبة لتغيير اللون هنالك طريقتان:
PHP كود :
'تغيير لون حسب الرقم
PieChart.categories.Item(0).ColorA = New SolidColorBrush(Colors.Black)
'تغيير لون حسب الاسم
PieChart.categories.Where(Function(c) c.NameA = "Lose").Single().ColorA = New SolidColorBrush(Colors.Yellow)
15-04-17, 12:08 AM
أخي الحبيب الشاكي لله لاحظت بق بسيط في الأداة يحدث في الحالة التالية التي سأوضحها لك:
عندك أربعة أصناف هي:
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 لا تساوي الصفر
أنا وجدت أنه يحل مشكلة البق:
بحيث يتم التنفيذ إذا كانت قيمة PercentA لا تساوي الصفر
أنا وجدت أنه يحل مشكلة البق:
PHP كود :
Private Sub Drow()
currentAngle = 0
root.Children.Cast(Of UIElement)().Where(Function(e) e.GetType() = GetType(Arc)).ToList().ForEach(Sub(e) root.Children.Remove(e))
For i 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
الصفحات : 1 2