TextOut

Déduit le texte au tableau d'utilisateur (le tampon) et rend le résultat de la réussite de cette opération. Ce tableau est conçu pour créer le ressourcegraphique.

bool  TextOut(
   const string       text,          // le texte déduit
   int                x,             // la coordonnée X 
   int                y,             // la coordonnée Y 
   uint               anchor,        // le moyen du rattachement
   uint               &data[],       // le tampon pour la sortie
   uint               width,         // la largeur du tampon en points
   uint               height,        // la hauteur du tampon en points
   uint               color,         // la couleur du texte
   ENUM_COLOR_FORMAT  color_format   // le format de la couleur pour la sortie
   );

Réglages

text

[in]  Le texte déduit, qui sera enregistré au tampon. Seulement une sortie de texte d'une ligne est effectuée.

x

[in]  La coordonnée X du point du rattachement du texte.

y

[in]  La coordonnée Y du point du rattachement du texte.

anchor

[in] La valeur de l'ensemble de 9 moyens prédéterminés de la disposition du point du rattachement du texte déduit. Est spécifiée par la combinaison de deux drapeaux — le drapeau de l'alignement du texte à l'horizontale et le drapeau de l'alignement du texte selon la verticale. Les noms des drapeaux sont amenés dans la Note.

data[]

[in]  Le tampon, où on déduit le texte. Ce tableau est utilisé pour créer le ressource graphique.

width

[in] La largeur du tampon en points (en pixels).

height

[in]  La hauteur du tampon en points (en pixels).

color

[in]  La couleur du texte.

color_format

[in]  Le format de la couleur est spécifié par la valeur de l'énumérationENUM_COLOR_FORMAT.

La valeur rendue

Rend true en cas de l'exécution réussie, autrement rend false.

Note

Le moyen du rattachement spécifié par le paramètre anchor, qui est la combinaison de deux drapeaux de l'alignement du texte selon la verticale et l'horizontale. Les drapeaux de l'alignement du texte à l'horizontale:

  • TA_LEFT — le point du rattachement sur le côté gauche du rectangle limitant
  • TA_CENTER — le point du rattachement à l'horizontale se trouve au milieu du rectangle limitant
  • TA_RIGHT — le point du rattachement sur le côté droite du rectangle limitant

Les drapeaux de l'alignement du texte selon la verticale:

  • TA_TOP — le point du rattachement sur le côté supérieur du rectangle limitant
  • TA_VCENTER — le point du rattachement à la verticale se trouve au milieu du rectangle limitant
  • TA_BOTTOM — le point du rattachement sur le côté inférieur du rectangle limitant

 

Les combinaisons possibles des drapeaux et les moyens du rattachement spécifiés par eux sont montrées sur le dessin.
 

9 moyens possibles du rattachement de la ligne de texte

Exemple:

//--- la largeur et la hauteur du canvas (la toile, où on fait le dessin)
#define IMG_WIDTH  200
#define IMG_HEIGHT 200
//--- avant le lancement du script montrons la fenêtre avec les paramètres
#property script_show_inputs
//---donnons la possibilité de spécifier le format de la couleur
input ENUM_COLOR_FORMAT clr_format=COLOR_FORMAT_XRGB_NOALPHA;
//--- le tableau (le tampon) pour la rendu 
uint ExtImg[IMG_WIDTH*IMG_HEIGHT];
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- créeron l'objet OBJ_BITMAP_LABEL pour le dessin    
   ObjectCreate(0,"CLOCK",OBJ_BITMAP_LABEL,0,0,0);
//--- indiquerons le nom de la ressource graphique pour la rendu dans l'objet CLOCK
   ObjectSetString(0,"CLOCK",OBJPROP_BMPFILE,"::IMG");
 
//--- les variables auxiliaires
   double a;            // l'angle de la flèche
   uint   nm=2700;      // le compteur des minutes
   uint   nh=2700*12;   // le compteur des heures
   uint   w,h;          // les variables pour la réception des tailles des lignes de texte
   int    x,y;          // les variables pour le calcul des coordonnées courants du point du rattachement des lignes de texte
 
//--- tournons les aiguilles des heures dans le cycle infini, jusqu'à ce que le script ne s'arrêtera pas
   while(!IsStopped())
     {
      //--- le nettoyage du tableau du tampon du dessin des heures
      ArrayFill(ExtImg,0,IMG_WIDTH*IMG_HEIGHT,0);
      //--- l'installation de la fonte pour la rendu des chiffres sur le cadran
      TextSetFont("Arial",-200,FW_EXTRABOLD,0);
      //--- dessinons le cadran
      for(int i=1;i<=12;i++)
        {
         //--- recevrons les tailles de l'heure courante sur le cadran
         TextGetSize(string(i),w,h);
         //--- calculons les coordonnées de l'heure courante sur le cadran
         a=-((i*300)%3600*M_PI)/1800.0;
         x=IMG_WIDTH/2-int(sin(a)*80+0.5+w/2);
         y=IMG_HEIGHT/2-int(cos(a)*80+0.5+h/2);
         //--- la sortie de cette heure sur le cadran au tampon ExtImg[]
         TextOut(string(i),x,y,TA_LEFT|TA_TOP,ExtImg,IMG_WIDTH,IMG_HEIGHT,0xFFFFFFFF,clr_format);
        }
      //---maintenant établissons la fonte pour la rendu de la grande aiguille     
      TextSetFont("Arial",-200,FW_EXTRABOLD,-int(nm%3600));
      //--- recevrons les tailles de la grande aiguille
      TextGetSize("----->",w,h);
      //--- calculons les coordonnées de la grande aiguille sur le cadran
      a=-(nm%3600*M_PI)/1800.0;
      x=IMG_WIDTH/2-int(sin(a)*h/2+0.5);
      y=IMG_HEIGHT/2-int(cos(a)*h/2+0.5);
      //--- la sortie de la grande aiguille sur le cadran au tampon ExtImg[]
      TextOut("----->",x,y,TA_LEFT|TA_TOP,ExtImg,IMG_WIDTH,IMG_HEIGHT,0xFFFFFFFF,clr_format);
 
      //---maintenant établissons la fonte pour la rendu de la petite aiguille      
      TextSetFont("Arial",-200,FW_EXTRABOLD,-int(nh/12%3600));
      TextGetSize("==>",w,h);
      //--- calculons les coordonnées de la petite aiguille sur le cadran
      a=-(nh/12%3600*M_PI)/1800.0;
      x=IMG_WIDTH/2-int(sin(a)*h/2+0.5);
      y=IMG_HEIGHT/2-int(cos(a)*h/2+0.5);
      //--- la sortie de la petite aiguille sur le cadran au tampon ExtImg[]
      TextOut("==>",x,y,TA_LEFT|TA_TOP,ExtImg,IMG_WIDTH,IMG_HEIGHT,0xFFFFFFFF,clr_format);
 
      //--- la mise à jour de la ressource graphique
      ResourceCreate("::IMG",ExtImg,IMG_WIDTH,IMG_HEIGHT,0,0,IMG_WIDTH,clr_format);
      //---la mise à jour obligatoire du graphique
      ChartRedraw();
 
      //---augmentons les compteurs de l'heure et des minutes
      nm+=60;
      nh+=60;
      //--- tenons une courte pause entre les cadres
      Sleep(10);
     }
//--- supprimons l'objet CLOCK à l'achèvement du travail du script
   ObjectDelete(0,"CLOCK");
//---
  }

Voir aussi

Les ressources, ResourceCreate(), ResourceSave(), TextGetSize(), TextSetFont()