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 :

//--- largeur et hauteur de la toile (celle sur laquelle le dessin est réalisé)
#define IMG_WIDTH  200
#define IMG_HEIGHT 200
//--- avant d'exécuter le script, affiche une fenêtre avec les paramètres
#property script_show_inputs
//--- fournit la possibilité de définir le format de couleur
input ENUM_COLOR_FORMAT clr_format=COLOR_FORMAT_XRGB_NOALPHA;
//--- tableau (buffer) pour le rendu
uint ExtImg[IMG_WIDTH*IMG_HEIGHT];
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- crée l'objet OBJ_BITMAP_LABEL pour le dessin    
   ObjectCreate(0,"CLOCK",OBJ_BITMAP_LABEL,0,0,0);
//--- définit le nom de la ressource graphique pour le rendu dans l'objet CLOCK
   ObjectSetString(0,"CLOCK",OBJPROP_BMPFILE,"::IMG");
 
//--- variables auxiliaires
   double a;            // angle de la flèche
   uint   nm=2700;      // compteur des minutes
   uint   nh=2700*12;   // compteur des heures
   uint   w,h;          // variables permettant d'obtenir la taille des chaînes de texte
   int    x,y;          // variables permettant de calculer les coordonnées actuelles du point d'ancrage des chaînes de texte 
 
//--- fait tourner les aiguilles de l'horloge en boucle infinie jusqu'à ce que le script s'arrête
   while(!IsStopped())
     {
      //--- efface le tableau buffer de dessin de l'horloge
      ArrayFill(ExtImg,0,IMG_WIDTH*IMG_HEIGHT,0);
      //--- définir la police d'écriture pour l'affichage des chiffres sur le cadran
      TextSetFont("Arial",-200,FW_EXTRABOLD,0);
      //--- dessine le cadran
      for(int i=1;i<=12;i++)
        {
         //--- obtient la taille de l'heure actuelle sur le cadran
         TextGetSize(string(i),w,h);
         //--- calcule les coordonnées de l'heure actuelle 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);
         //--- affiche cette heure sur le cadran dans le buffer ExtImg[]
         TextOut(string(i),x,y,TA_LEFT|TA_TOP,ExtImg,IMG_WIDTH,IMG_HEIGHT,0xFFFFFFFF,clr_format);
        }
      //--- définit la police de caractères pour le dessin de l'aiguille des minutes
      TextSetFont("Arial",-200,FW_EXTRABOLD,-int(nm%3600));
      //--- récupère la taille de l'aiguille des minutes
      TextGetSize("----->",w,h);
      //--- calcule les coordonnées des minutes 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);
      //--- affiche l'aiguille des minutes sur le cadran dans le buffer ExtImg[]
      TextOut("----->",x,y,TA_LEFT|TA_TOP,ExtImg,IMG_WIDTH,IMG_HEIGHT,0xFFFFFFFF,clr_format);
 
      //--- définit la police de caractères pour le dessin de l'aiguille des heures
      TextSetFont("Arial",-200,FW_EXTRABOLD,-int(nh/12%3600));
      TextGetSize("==>",w,h);
      //--- calcule les coordonnées des heures 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);
      //--- affiche l'aiguille des heures sur le cadran dans le buffer ExtImg[] 
      TextOut("==>",x,y,TA_LEFT|TA_TOP,ExtImg,IMG_WIDTH,IMG_HEIGHT,0xFFFFFFFF,clr_format);
 
      //--- met à jour la ressource graphique
      ResourceCreate("::IMG",ExtImg,IMG_WIDTH,IMG_HEIGHT,0,0,IMG_WIDTH,clr_format);
      //--- mise à jour forcée du graphique
      ChartRedraw();
 
      //--- increase the hour and minute counters
      nm+=60;
      nh+=60;
      //--- fais une courte pause entre les frames
      Sleep(10);
     }
//--- supprime l'objet CLOCK lorsque le script se termine
   ObjectDelete(0,"CLOCK");
//---
  }

Voir aussi

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