TextOut

A função exibe um texto num array personalizado (buffer) e retorna o resultado dessa operação. O array é projetado para criar o recurso gráfico.

bool  TextOut(
   const string       text,          // texto exibido
   int                x,             // coordenada X
   int                y,             // coordenada Y
   uint               anchor,        // tipo de âncora
   uint               &data[],       // buffer de saída
   uint               width,         // largura de buffer em pixels
   uint               height,        // altura de buffer em pixels
   uint               color,         // cor do texto
   ENUM_COLOR_FORMAT  color_format   // formato de cor para a saída
   );

Parâmetros

text

[in]  Texto exibido que será escrito para o buffer. Somente o texto de uma linha é exibido.

x

[in]  Coordenada X do ponto de ancoragem do texto exibido.

y

[in]  Coordenada Y do ponto de ancoragem do texto exibido.

anchor

[in]  O valor de saída dos 9 métodos pré-definidos de localização do ponto de ancoragem do texto exibido. O valor é definido por uma combinação de dois sinalizadores - sinalizadores de alinhamento de texto horizontal e vertical. Nomes dos sinalizadores estão listados na Nota abaixo.

data[]

[in]  Buffer, na qual o texto é exibido. O buffer é usado para criar o recurso gráfico.

width

[in]  Largura do buffer em pixels.

height

[in]  Altura do buffer em pixels.

color

[in]  Cor do texto.

color_format

[in]  Formato de cor é definida pelo valor do enumerador ENUM_COLOR_FORMAT.

Valor de retorno

Retorna true se bem sucedido, caso contrário false.

Observação

Ponto de ancoragem determinado por anchor é uma combinação de dois sinalizadores de alinhamento de texto horizontal e vertical. Sinalizador de alinhamento de texto horizontal:

  • TA_LEFT — ponto de ancoragem no lado esquerdo da caixa delimitada
  • TA_CENTER — ponto de ancoragem horizontal localiza-se no centro da caixa delimitada
  • TA_RIGHT — ponto de ancoragem no lado direito da caixa delimitada

Sinalizador de alinhamento de texto vertical:

  • TA_TOP — ponto de ancoragem no lado superior da caixa delimitada
  • TA_VCENTER — ponto de ancoragem verticais está localizado no centro da caixa delimitada
  • TA_BOTTOM — ponto de ancoragem no lado inferior da caixa delimitada

 

Combinações possíveis de sinalizadores e pontos de ancoragem determinados são mostrados na imagem.
 

9 maneiras possíveis de vincular uma string de texto

 

Exemplo:

//--- largura e altura do canvas (tela onde ocorre a renderização)
#define IMG_WIDTH  200
#define IMG_HEIGHT 200
//--- antes de iniciar o script, mostraremos a janela com parâmetros
#property script_show_inputs
//--- daremos a possibilidade de definir o formato de cor
input ENUM_COLOR_FORMAT clr_format=COLOR_FORMAT_XRGB_NOALPHA;
//--- array (buffer) para a renderização
uint ExtImg[IMG_WIDTH*IMG_HEIGHT];
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- criaremos o objeto OBJ_BITMAP_LABEL para desenhar    
   ObjectCreate(0,"CLOCK",OBJ_BITMAP_LABEL,0,0,0);
//--- indicaremos o nome do recurso gráfico para renderização no objeto CLOCK
   ObjectSetString(0,"CLOCK",OBJPROP_BMPFILE,"::IMG");
 
//--- variáveis auxiliares
   double a;            // ângulo do ponteiro
   uint   nm=2700;      // contador de minutos
   uint   nh=2700*12;   // contador de horas
   uint   w,h;          // variáveis para obter os tamanhos das linhas de texto 
   int    x,y;          // variáveis para o cálculo das coordenadas atuais do ponto de ancoragem das linhas de texto
 
//--- giramos os ponteiros do relógio em laço infinito, enquanto o script não for parado
   while(!IsStopped())
     {
      //--- limpeza do array do buffer de desenho do relógio
      ArrayFill(ExtImg,0,IMG_WIDTH*IMG_HEIGHT,0);
      //--- configuração da fonte para desenhar os dígitos no mostrador
      TextSetFont("Arial",-200,FW_EXTRABOLD,0);
      //--- desenhamos o mostrador
      for(int i=1;i<=12;i++)
        {
      //--- obtemos os tamanhos da hora atual no mostrador
         TextGetSize(string(i),w,h);
      //--- calculamos as coordenadas da hora atual no mostrador
         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);
      //--- saída dessa hora no mostrador para o buffer ExtImg[]
         TextOut(string(i),x,y,TA_LEFT|TA_TOP,ExtImg,IMG_WIDTH,IMG_HEIGHT,0xFFFFFFFF,clr_format);
        }
      //--- agora configuramos a fonte para desenhar o ponteiro dos minutos
      TextSetFont("Arial",-200,FW_EXTRABOLD,-int(nm%3600));
      //--- obtemos os tamanhos do ponteiro dos minutos
      TextGetSize("----->",w,h);
      //--- calculamos as coordenadas do ponteiro dos minutos no mostrador
      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);
      //--- saída do ponteiro dos minutos no mostrador para o buffer ExtImg[]
      TextOut("----->",x,y,TA_LEFT|TA_TOP,ExtImg,IMG_WIDTH,IMG_HEIGHT,0xFFFFFFFF,clr_format);
 
      //--- agora configuramos a fonte para desenhar o ponteiro das horas
      TextSetFont("Arial",-200,FW_EXTRABOLD,-int(nh/12%3600));
      TextGetSize("==>",w,h);
      //--- calculamos as coordenadas do ponteiro das horas no mostrador
      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);
      //--- saída do ponteiro das horas no mostrador para o buffer ExtImg[]
      TextOut("==>",x,y,TA_LEFT|TA_TOP,ExtImg,IMG_WIDTH,IMG_HEIGHT,0xFFFFFFFF,clr_format);
 
      //--- atualização do recurso gráfico
      ResourceCreate("::IMG",ExtImg,IMG_WIDTH,IMG_HEIGHT,0,0,IMG_WIDTH,clr_format);
      //--- atualização forçada do gráfico
      ChartRedraw();
 
      //--- incrementamos os contadores de hora e minutos
      nm+=60;
      nh+=60;
      //--- fazemos uma pequena pausa entre quadros
      Sleep(10);
     }
//--- removemos o objeto CLOCK ao finalizar o trabalho do script
   ObjectDelete(0,"CLOCK");
//---
  }

Também Veja

Recursos, ResourceCreate(), ResourceSave(), TextGetSize(), TextSetFont()