| //+------------------------------------------------------------------+
|
| //| PieChartSample.mq5 |
|
| //| Copyright 2000-2025, MetaQuotes Ltd. |
|
| //| https://www.mql5.com |
|
| //+------------------------------------------------------------------+
|
| #property copyright "Copyright 2000-2025, MetaQuotes Ltd."
|
| #property link "https://www.mql5.com"
|
| #property description "Example of using pie chart"
|
| //---
|
| #include <Canvas\Charts\PieChart.mqh>
|
| //+------------------------------------------------------------------+
|
| //| inputs |
|
| //+------------------------------------------------------------------+
|
| input int Width=600;
|
| input int Height=450;
|
| //+------------------------------------------------------------------+
|
| //| Script program start function |
|
| //+------------------------------------------------------------------+
|
| int OnStart(void)
|
| {
|
| //--- check
|
| if(Width<=0 || Height<=0)
|
| {
|
| Print("Too simple.");
|
| return(-1);
|
| }
|
| //--- create chart
|
| CPieChart pie_chart;
|
| if(!pie_chart.CreateBitmapLabel("PieChart",10,10,Width,Height))
|
| {
|
| Print("Error creating pie chart: ",GetLastError());
|
| return(-1);
|
| }
|
| pie_chart.ShowPercent();
|
| //--- draw
|
| for(uint i=0;i<30;i++)
|
| {
|
| pie_chart.ValueAdd(100*(i+1),"Item "+IntegerToString(i));
|
| Sleep(10);
|
| }
|
| Sleep(2000);
|
| //--- disable legend
|
| pie_chart.LegendAlignment(ALIGNMENT_LEFT);
|
| Sleep(2000);
|
| //--- disable legend
|
| pie_chart.LegendAlignment(ALIGNMENT_RIGHT);
|
| Sleep(2000);
|
| //--- disable legend
|
| pie_chart.LegendAlignment(ALIGNMENT_TOP);
|
| Sleep(2000);
|
| //--- disable legend
|
| pie_chart.ShowLegend(false);
|
| Sleep(2000);
|
| //--- disable percentage
|
| pie_chart.ShowPercent(false);
|
| Sleep(2000);
|
| //--- disable descriptors
|
| pie_chart.ShowDescriptors(false);
|
| Sleep(2000);
|
| //--- enable all
|
| pie_chart.ShowLegend();
|
| pie_chart.ShowValue();
|
| pie_chart.ShowDescriptors();
|
| Sleep(2000);
|
| //--- or like this
|
| pie_chart.ShowFlags(FLAG_SHOW_LEGEND|FLAG_SHOW_DESCRIPTORS|FLAG_SHOW_PERCENT);
|
| uint total=pie_chart.DataTotal();
|
| //--- play with values
|
| for(uint i=0;i<total && !IsStopped();i++)
|
| {
|
| pie_chart.ValueUpdate(i,100*(rand()%10+1));
|
| Sleep(1000);
|
| }
|
| //--- play with colors
|
| for(uint i=0;i<total && !IsStopped();i++)
|
| {
|
| pie_chart.ColorUpdate(i%total,RandomRGB());
|
| Sleep(1000);
|
| }
|
| //--- rotate
|
| while(!IsStopped())
|
| {
|
| pie_chart.DataOffset(pie_chart.DataOffset()+1);
|
| Sleep(200);
|
| }
|
| //--- finish
|
| pie_chart.Destroy();
|
| return(0);
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Random RGB color |
|
| //+------------------------------------------------------------------+
|
| uint RandomRGB(void)
|
| {
|
| return(XRGB(rand()%255,rand()%255,rand()%255));
|
| }
|
| //+------------------------------------------------------------------+
|