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 da tela (usado para o desenho)
#define IMG_WIDTH  200
#define IMG_HEIGHT 200
//--- exibir a janela de parâmetro antes de lançar o script
#property script_show_inputs
//--- permite definir o formato de cor
input ENUM_COLOR_FORMAT clr_format=COLOR_FORMAT_XRGB_NOALPHA;
//--- array de desenho (buffer)
uint ExtImg[IMG_WIDTH*IMG_HEIGHT];
//+------------------------------------------------------------------+
//| Programa Script da função start (iniciar)                        |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- criar o objeto OBJ_BITMAP_LABEL para desenhar    
   ObjectCreate(0,"RELÓGIO",OBJ_BITMAP_LABEL,0,0,0);
//--- especificar o nome do recurso gráfico para escrever no objeto RELÓGIO
   ObjectSetString(0,"RELÓGIO",OBJPROP_BMPFILE,"::IMG");
 
//--- variáveis auxiliares
   double a;            // seta no canto
   uint   nm=2700;      // minutos no canto
   uint   nh=2700*12;   // horas no canto
   uint   w,h;          // variáveis para receber string de tamanhos de texto 
   int    x,y;          // variáveis para o cálculo das coordenadas atuais da string de texto dos pontos de ancoragem
 
//--- girar ponteiros do relógio em um loop infinito, até que o script seja interrompido
   while(!IsStopped())
     {
      //--- limpar o buffer do array do desenho do relógio
      ArrayFill(ExtImg,0,IMG_WIDTH*IMG_HEIGHT,0);
      //--- definir a fonte para desenhar dígitos para o rosto do relógio
      TextSetFont("Arial",-200,FW_EXTRABOLD,0);
      //--- desenhar a face do relógio
      for(int i=1;i<=12;i++)
        {
         //--- receber o tamanho da hora atual sobre a face do relógio
         TextGetSize(string(i),w,h);
         //--- calcular as coordenadas da hora atual sobre a face do relógio
         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 da hora na face do relógio através do buffer ExtImg[]
         TextOut(string(i),x,y,TA_LEFT|TA_TOP,ExtImg,IMG_WIDTH,IMG_HEIGHT,0xFFFFFFFF,clr_format);
        }
      //--- agora, especificar a fonte para desenhar o ponteiro dos minutos
      TextSetFont("Arial",-200,FW_EXTRABOLD,-int(nm%3600));
      //--- receber o tamanho do ponteiro dos minutos
      TextGetSize("----->",w,h);
      //--- calcular as coordenadas do ponteiro dos minutos sobre a face do relógio
      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 na face do relógio através do buffer ExtImg[]
      TextOut("----->",x,y,TA_LEFT|TA_TOP,ExtImg,IMG_WIDTH,IMG_HEIGHT,0xFFFFFFFF,clr_format);
 
      //--- agora, definir a fonte para desenhar o ponteiro dos minutos
      TextSetFont("Arial",-200,FW_EXTRABOLD,-int(nh/12%3600));
      TextGetSize("==>",w,h);
      //--- calcular as coordenadas do ponteiro das horas na face do relógio
      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 na face do relógio através do buffer ExtImg[]
      TextOut("==>",x,y,TA_LEFT|TA_TOP,ExtImg,IMG_WIDTH,IMG_HEIGHT,0xFFFFFFFF,clr_format);
 
      //--- atualizar o recurso gráfico
      ResourceCreate("::IMG",ExtImg,IMG_WIDTH,IMG_HEIGHT,0,0,IMG_WIDTH,clr_format);
      //--- forçar a atualização do gráfico
      ChartRedraw();
 
      //--- aumentar os contadores da hora e minuto
      nm+=60;
      nh+=60;
      //--- mantendo uma pequena pausa entre os quadros
      Sleep(10);
     }
//--- excluir o objeto RELÓGIO quando completar a operação do script
   ObjectDelete(0,"CLOCK");
//---
  }

Também Veja

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