TextSetFont

Establece la fuente para visualizar el texto a través de los métodos del dibujo y devuelve el resultado de esta operación. Por defecto se usa la fuente Arial con el tamaño -120 (12 pt).

bool  TextSetFont(
   const string  name,            // nombre de la fuente o la ruta del archivo de la fuente en el disco
   int           size,            // tamaño de la fuente
   uint          flags,           // combinación de banderas
   int           orientation=0    // ángulo de inclinación del texto
   );

Parámetros

name

[in]  Nombre de la fuente en el sistema, o el nombre del recurso que contiene la fuente, o la ruta del archivo de la fuente en el disco.

size

[in]  Tamaño de la fuente que puede ser establecido con valores positivos y negativos. En caso de valores positivos, el tamaño del texto a mostrar no depende de los ajustes de tamaños de las fuentes en el sistema operativo. En caso de valores negativos, el valor se establece en las décimas partes del punto y el tamaño del texto va a depender de los ajustes del sistema ("escala estándar" o "escala grande"). Más detalles sobre la diferencia entre los regímenes se puede leer en la Nota.

flags

[in]  Combinación de banderas que describen el estilo de la fuente.

orientation

[in]  Ángulo de inclinación del texto por la horizontal respecto al eje X, la unidad de medición es de 0,1 del grado. Es decir, orientation=450 significa la inclinación bajo un ángulo de 45 grados.

Valor devuelto

Devuelve true si la fuente actual se establece con éxito, de lo contrario es false. Posibles códigos de errores:

  • ERR_INVALID_PARAMETER(4003) - name representa NULL o "" (cadena vacía),
  • ERR_INTERNAL_ERROR(4001) - error del sistema operativo (por ejemplo, intento de crear una fuente que no existe).

Nota

Si en el nombre de la fuente se utiliza "::", la fuente se carga desde un recurso EX5. Si el nombre de la fuente name va acompañado con la extensión, entonces esta fuente se carga desde el archivo. En esta caso, si la ruta de la fuente se empieza con "\" o "/", el archivo se busca referente la carpeta MQL5, de lo contrario se busca referente a la ruta del archivo EX5 que ha llamado a la función TextSetFont().

El tamaño de la fuente se establece con valores positivos o negativos, el signo determina la dependencia del tamaño de la fuente de los ajustes del sistema operativo (la escala de la fuente).

  • Si para establecer el tamaño se utiliza un número positivo, este tamaño se transforma en unidades físicas de medición del dispositivo (píxeles) durante el cambio de la fuente lógica a la física, y este tamaño corresponde a la altura de los glifos del símbolo escogidos desde las fuentes disponibles. Este caso no es recomendable cuando se supone el uso común de los textos visualizados por la función TextOut() y los textos visualizados a través del objeto gráfico OBJ_LABEL ("Etiqueta de texto") en el mismo gráfico.
  • Si para establecer el tamaño se utiliza un número negativo, se supone que el número especificado se establece en décimas partes del punto lógico (el valor -350 es igual a 35 puntos lógicos) y se divide por 10. Luego el valor obtenido se transforma en unidades físicas de medición del dispositivo (píxeles) y corresponde al valor absoluto de la altura del símbolo desde las fuentes disponibles. Para conseguir en la pantalla el texto con el mismo tamaño que hay en el objeto OBJ_LABEL, es necesario multiplicar el tamaño de la fuente especificada en las propiedades del objeto por -10.

Las banderas pueden ser utilizadas como combinaciones de las banderas del estilo con una de las banderas que determina el grosor de la fuente. Los nombres de las banderas se listan a continuación.

Banderas para fijar el estilo de escritura de la fuente

Bandera

Descripción

FONT_ITALIC

Cursiva

FONT_UNDERLINE

Subrayado

FONT_STRIKEOUT

Tachado

 

Banderas para fijar el grosor de la fuente

Bandera

FW_DONTCARE

FW_THIN

FW_EXTRALIGHT

FW_ULTRALIGHT

FW_LIGHT

FW_NORMAL

FW_REGULAR

FW_MEDIUM

FW_SEMIBOLD

FW_DEMIBOLD

FW_BOLD

FW_EXTRABOLD

FW_ULTRABOLD

FW_HEAVY

FW_BLACK

 

Ejemplo:

#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
 
#define   COORD_X    200
#define   COORD_Y    100
#define   OBJ_NAME   "TestTextGetSizeBitmapLabel"
#define   RES_NAME   "TestTextGetSizeResource"
#define   COLOR_NULL 0x00FFFFFF
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- identificador del gráfico actual
   long   chart_idChartID();
   
   string font_names[] ={"Arial""Tahoma""Calibri"};
   uint   flags_array[]={0FONT_ITALICFONT_UNDERLINEFONT_STRIKEOUT};
   uint   fw_array[]={FW_DONTCAREFW_THINFW_EXTRALIGHTFW_ULTRALIGHTFW_LIGHT,
                      FW_NORMALFW_REGULARFW_MEDIUMFW_SEMIBOLDFW_DEMIBOLD,
                      FW_BOLDFW_EXTRABOLDFW_ULTRABOLDFW_HEAVYFW_BLACK};
   
//--- prohibimos la representación de cualquier atributo del gráfico de precios
   ChartSetInteger(chart_idCHART_SHOWfalse);
   
//--- declaramos los parámetros del recurso gráfico
   uint rc_width =(int)ChartGetInteger(chart_idCHART_WIDTH_IN_PIXELS); 
   uint rc_height=(int)ChartGetInteger(chart_idCHART_HEIGHT_IN_PIXELS); 
   uint rc_data[]; 
   uint rc_size=rc_width*rc_height;
  
//--- creamos un recurso gráfico para la muestra de texto
   if(!CreateResource(chart_idrc_datarc_widthrc_height))
      return;
   
//--- ciclo por los nombres de las fuentes
   for(int i=0i<(int)font_names.Size(); i++)
     {
      //--- ciclo por las banderas de las fuentes
      for(int j=0j<(int)flags_array.Size(); j++)
        {
         //--- dibujamos el texto con la fuente y la bandera de dibujado obtenidos del array
         DrawText(font_names[i], flags_array[j], rc_datarc_widthrc_height);
         Sleep(800);
         ArrayInitialize(rc_dataCOLOR_NULL);
        }
      Sleep(800);
      ArrayInitialize(rc_dataCOLOR_NULL);
     }
   
//--- después de mostrar todos los textos con diferentes tamaños y dibujado de fuente,
//--- mostramos el texto con diferentes banderas de grosor de fuente
   for(int i=0i<(int)fw_array.Size(); i++)
     {
      //--- establecemos el tamaño y el nombre de la fuente para mostrar el texto con las banderas de grosor
      string font_name="Tahoma";
      int    size=-140;
      TextSetFont(font_namesizefw_array[i]);
      
      //--- creamos la cadena de texto dibujada, la mostramos en el array de píxeles del recurso y actualizamos el recurso
      string text=StringFormat("Text%d: Font name: \"%s%s\", size: %d (%d)"i+1font_nameFlagWidthDescription(fw_array[i]), sizesize/-10);
      TextOut(textCOORD_XCOORD_YANCHOR_LEFT_UPPERrc_datarc_widthrc_heightColorToARGB(clrDodgerBlue), COLOR_FORMAT_ARGB_NORMALIZE);
      Update(RES_NAMErc_datarc_widthrc_heighttrue);
      //--- esperamos un segundo
      Sleep(1000);
      ArrayInitialize(rc_dataCOLOR_NULL);
     }
   
//--- esperamos cinco segundos, luego liberamos el recurso y eliminamos el objeto gráfico
   Sleep(5000);
   ResourceFree(RES_NAME);
   ObjectDelete(chart_idOBJ_NAME);
   
//--- permitimos la representación de cualquier atributo del gráfico de precios
   ChartSetInteger(chart_idCHART_SHOWtrue);
   ChartRedraw(chart_id);
   /*
  como resultado del funcionamiento del script, se mostrarán mensajes de texto en el gráfico
  diferentes tipos de fuente con diferentes tamaños y banderas de dibujado y anchura de texto
   */ 
  }
//+------------------------------------------------------------------+
//| Muestra en el gráfico cinco cadenas de texto de diferentes       |
//| tamaños con la fuente y las banderas especificadas               |
//+------------------------------------------------------------------+
void DrawText(const string font_nameuint flagsuint &pixels_array[], uint res_widthuint res_height)
  {
//--- mostramos cinco cadenas de texto con diferentes tamaños de fuente
   for(int i=0i<5i++)
     {
      //--- calculamos el tamaño de fuente y establecemos la fuente para mostrar el texto mediante los métodos de dibujado
      int size=-140+10*i;
      TextSetFont(font_namesizeflags);
      
      //--- creamos la cadena de texto dibujada, la mostramos en el array de píxeles del recurso y actualizamos el recurso
      string text=StringFormat("Text%d: Font name: \"%s%s\", size: %d (%d)"i+1font_nameFlagDescription(flags), sizesize/-10);
      TextOut(textCOORD_XCOORD_Y+22*iANCHOR_LEFT_UPPERpixels_arrayres_widthres_heightColorToARGB(clrDodgerBlue), COLOR_FORMAT_ARGB_NORMALIZE);
      Update(RES_NAMEpixels_arrayres_widthres_heighttrue);
      //--- esperamos un poco
      Sleep(800);
     }
  }
//+------------------------------------------------------------------+
//| Retorna la descripción de las banderas de dibujado de la fuente  |
//+------------------------------------------------------------------+
string FlagDescription(const uint flag)
  {
   switch(flag)
     {
      case FONT_ITALIC     :  return(" Italic");
      case FONT_UNDERLINE  :  return(" Underline");
      case FONT_STRIKEOUT  :  return(" Strikeout");
     }
   return("");
  }
//+------------------------------------------------------------------+
//| Retorna la descripción de las banderas de grosor de la fuente    |
//+------------------------------------------------------------------+
string FlagWidthDescription(const uint flag)
  {
   switch(flag)
     {
      case FW_DONTCARE  :  return(" Dontcare");
      case FW_THIN      :  return(" Thin");
      case FW_EXTRALIGHT:  return(" Extralight");
      case FW_ULTRALIGHT:  return(" Ultralight");
      case FW_LIGHT     :  return(" Light");
      case FW_NORMAL    :  return(" Normal");
      case FW_REGULAR   :  return(" Regular");
      case FW_MEDIUM    :  return(" Medium");
      case FW_SEMIBOLD  :  return(" Semibold");
      case FW_DEMIBOLD  :  return(" Demibold");
      case FW_BOLD      :  return(" Bold");
      case FW_EXTRABOLD :  return(" Extrabold");
      case FW_ULTRABOLD :  return(" Ultrabold");
      case FW_HEAVY     :  return(" Heavy");
      case FW_BLACK     :  return(" Black");
     }
   return("");
  }
//+------------------------------------------------------------------+
//| Crea un recurso gráfico para todo el gráfico                     |
//+------------------------------------------------------------------+
bool CreateResource(const long chart_iduint &pixel_data[], const uint widthconst uint height)
  {
//--- establecemos el tamaño del array de píxeles
   ResetLastError(); 
   uint size=width*height;
   if(ArrayResize(pixel_datasize)!=size
     { 
      PrintFormat("%s: ArrayResize() failed. Error code %d",__FUNCTION__GetLastError()); 
      return(false); 
     } 
//--- rellenamos el array de píxeles con un color transparente y creamos un recurso gráfico basado en él
   ArrayInitialize(pixel_dataCOLOR_NULL); 
   if(!ResourceCreate(RES_NAMEpixel_datawidthheight000COLOR_FORMAT_ARGB_NORMALIZE)) 
     { 
      PrintFormat("%s: ResourceCreate() failed. Error code ",__FUNCTION__GetLastError()); 
      return(false); 
     } 
  
//--- creamos un objeto "Etiqueta Gráfica" en las coordenadas de la esquina superior izquierda del gráfico
   if(!ObjectCreate(0OBJ_NAMEOBJ_BITMAP_LABEL000)) 
     { 
      PrintFormat("%s: ObjectCreate() failed. Error code %d",__FUNCTION__GetLastError()); 
      return(false); 
     } 
//--- establecemos una anchura y altura del objeto de dibujo creado iguales a la anchura y altura del recurso gráfico.
//--- establecemos el punto de anclaje del objeto en su centro.
   if(!ObjectSetInteger(chart_idOBJ_NAMEOBJPROP_XSIZEwidth))
     {
      PrintFormat("%s: ObjectSetInteger() failed. Error code %d",__FUNCTION__GetLastError()); 
      return(false); 
     }
   if(!ObjectSetInteger(chart_idOBJ_NAMEOBJPROP_YSIZEheight))
     {
      PrintFormat("%s: ObjectSetInteger() failed. Error code %d",__FUNCTION__GetLastError()); 
      return(false); 
     }
//--- para el objeto de imagen, especificamos como archivo de imagen el recurso gráfico creado previamente
//--- en este caso, para especificar el nombre del recurso gráfico utilizado, deberemos escribir antes de su nombre "::"
   if(!ObjectSetString(chart_idOBJ_NAMEOBJPROP_BMPFILE"::"+RES_NAME))
     {
      PrintFormat("%s: ObjectSetString() failed. Error code %d",__FUNCTION__GetLastError()); 
      return(false); 
     }
    
//--- todo ha tenido éxito
   return(true);
  }
//+------------------------------------------------------------------+ 
//| Actualiza los datos del recurso gráfico                          |
//+------------------------------------------------------------------+ 
void Update(const string res_nameconst uint &pixel_data[], const uint widthconst uint heightconst bool redraw
  { 
//--- si se ha transferido un tamaño cero, salimos
   if(width==0 || height==0
      return
//--- actualizamos los datos de recursos y redibujamos el gráfico
   if(ResourceCreate(res_namepixel_datawidthheight000COLOR_FORMAT_ARGB_NORMALIZE) && redraw
      ChartRedraw(); 
  } 

Véase también

Recursos, ResourceCreate(), ResourceSave(), TextOut()