ChartScreenShot

La fonction assure le screenshot du graphique indiqué dans son état courant dans le format GIF, PNG ou BMP en fonction de l'extension spécifiée.

bool  ChartScreenShot(
   long             chart_id,                   // identificateur du graphique
   string           filename,                   // nom du fichier
   int              width,                      // largeur 
   int              height,                     // hauteur
   ENUM_ALIGN_MODE  align_mode=ALIGN_RIGHT      // type de l'alignement
   );

Paramètres

chart_id

[in]  L'identificateur du graphique. 0 signifit le graphique courant.

filename

[in]  Le nom du fichier de screenshot. Ne peut pas excéder 63 caractères. Le screenshot se place au répertoire \Files.

width

[in]  La largeur de screenshot en pixels

height

[in]  La hauteur de screenshot en pixels

align_mode=ALIGN_RIGHT

[in]  Le mode de la sortie de screenshot étroit. les valeurs de l'énumération ENUM_ALIGN_MODE. ALIGN_RIGHT signifie l'alignement selon la marge droite (la sortie de la fin). ALIGN_LEFT signifie l'alignement selon une marge gauche.

La valeur rendue

Rend true en cas du succès, autrement rend false.

Note

S'il faut de faire un screenshot d'un graphique d'une certaine position, tout d'abord il est nécessaire de positionner le graphique en utilisant la fonction ChartNavigate(). Si la dimension horizontale du screenshot est plus petite que la fenêtre de graphique, la partie droite de la fenêtre du graphique, ou une gauche partie sont affichées, en fonction de la valeur du paramètre align_mode.

Exemple:

#property description "Le conseiller présente la création de la série des captures d'écran du graphique actuel"
#property description "à l'aide de la fonction ChartScreenShot(). Le nom du fichier"
#property description "est déduit aussi sur le graphique pour la commodité. La hauteur et la largeur des dessins sont spécifiées par les macros."
 
#define        WIDTH  800     // la largeur du dessin pour l'appel de ChartScreenShot()
#define        HEIGHT 600     // La hauteur du dessin pour l'appel de ChartScreenShot()
 
//--- input parameters
input int      pictures=5;    // la quantité de dessins dans une série
int            mode=-1;       // -1 signifie le décalage vers le bord droit du graphique, 1 - vers le bord gauche
int            bars_shift=300;// le nombre de barres au défilement du graphique par la fonction ChartNavigate()
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
void OnInit()
  {
//---désactivons l'autodéfilement du graphique
   ChartSetInteger(0,CHART_AUTOSCROLL,false);
//--- établissons l'alinéa du bord droit du graphique
   ChartSetInteger(0,CHART_SHIFT,true);
//---établissons l'affichage du graphique en forme des bougies
   ChartSetInteger(0,CHART_MODE,CHART_CANDLES);
//---
   Print("La préparation du conseiller au travail est terminée");
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
 
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//--- la sortie du nom de la fonction, du temps de l'appel et de l'identificateur de l'événement
   Print(__FUNCTION__,TimeCurrent(),"   id=",id,"   mode=",mode);
//--- le traitement de l'événement CHARTEVENT_CLICK ("La pression par la souris sur le graphique")
   if(id==CHARTEVENT_CLICK)
     {
      //--- le déplacement initial du bord du graphique
      int pos=0;
      //--- le mode du travail avec le bord gauche du graphique
      if(mode>0)
        {
         //--- défilons le graphique vers le bord gauche
         ChartNavigate(0,CHART_BEGIN,pos);
         for(int i=0;i<pictures;i++)
           {
            //---préparons la signature sur le graphique et le nom pour le fichier
            string name="ChartScreenShot"+"CHART_BEGIN"+string(pos)+".gif";
            //--- la conclusion du nom sur le graphique en forme du commentaire
            Comment(name);
            //--- sauvegardons la capture d'écran au dossier le répertoire_du terminal\MQL5\Files\
            if(ChartScreenShot(0,name,WIDTH,HEIGHT,ALIGN_LEFT))
               Print("Nous avons sauvegardé la capture d'écran ",name);
            //---
            pos+=bars_shift;
            //---donnons le temps à l'utilisateur pour regarder un nouveau secteur du graphique
            Sleep(3000);
            //--- défilons le graphique de la position courante au bars_shift à droite
            ChartNavigate(0,CHART_CURRENT_POS,bars_shift);
           }
         //--- le changement du mode à l'opposé
         mode*=-1;
        }
      else // le mode du travail avec le bord droit du graphique
        {
         //--- défilons le graphique vers le bord droit
         ChartNavigate(0,CHART_END,pos);
         for(int i=0;i<pictures;i++)
           {
            //---préparons la signature sur le graphique et le nom pour le fichier
            string name="ChartScreenShot"+"CHART_END"+string(pos)+".gif";
            //--- la conclusion du nom sur le graphique en forme du commentaire
            Comment(name);
            //--- sauvegardons la capture d'écran au dossier le répertoire_du terminal\MQL5\Files\
            if(ChartScreenShot(0,name,WIDTH,HEIGHT,ALIGN_RIGHT))
               Print("Nous avons sauvegardé la capture d'écran ",name);
            //---
            pos+=bars_shift;
            //---donnons le temps à l'utilisateur pour regarder un nouveau secteur du graphique
            Sleep(3000);
            //--- défilons le graphique de la position courante au bars_shift à droite
            ChartNavigate(0,CHART_CURRENT_POS,-bars_shift);
           }
         //--- le changement du mode à l'opposé
         mode*=-1;
        }
     }  // la fin du traitement de l'événement CHARTEVENT_CLICK
//--- la fin du gestionnaire OnChartEvent()  
  }

Voir aussi

ChartNavigate(), Les ressources