Rotar un texto en un ángulo arbitrario

Los objetos de tipo texto (etiqueta OBJ_TEXT (en coordenadas de cotización) y panel OBJ_LABEL (en coordenadas de pantalla)) permiten girar la etiqueta de texto en un ángulo arbitrario. Para ello, existe la propiedad OBJPROP_ANGLE del tipo double. Contiene el ángulo en grados relativo a la posición normal del objeto. Los valores positivos giran el objeto en el sentido contrario a las agujas del reloj, y los negativos en el sentido de las agujas del reloj.

No obstante, hay que tener en cuenta que los ángulos cuya diferencia es múltiplo de 360 grados son idénticos, es decir, por ejemplo, +315 y -45 son iguales. La rotación se realiza alrededor del punto de anclaje del objeto (por defecto, arriba a la izquierda).

Rotar objetos OBJ_LABEL y OBJ_TEXT en ángulos múltiplos de 45 grados

Rotar objetos OBJ_LABEL y OBJ_TEXT en ángulos múltiplos de 45 grados

Puede comprobar el efecto de la propiedad OBJPROP_ANGLE en un objeto utilizando el script ObjectAngle.mq5. Crea una etiqueta de texto OBJ_LABEL en el centro de la ventana, tras lo cual comienza a girar periódicamente 45 grados hasta que el usuario detiene el proceso.

void OnStart()
{
   const string name = "ObjAngle";
   ObjectCreate(0nameOBJ_LABEL000);
   const int centerX = (int)ChartGetInteger(0CHART_WIDTH_IN_PIXELS) / 2;
   const int centerY = (int)ChartGetInteger(0CHART_HEIGHT_IN_PIXELS) / 2;
   ObjectSetInteger(0nameOBJPROP_XDISTANCEcenterX);
   ObjectSetInteger(0nameOBJPROP_YDISTANCEcenterY);
   ObjectSetInteger(0nameOBJPROP_ANCHORANCHOR_CENTER);
   
   int angle = 0;
   while(!IsStopped())
   {
      ObjectSetString(0nameOBJPROP_TEXTStringFormat("Angle: %d°"angle));
      ObjectSetDouble(0nameOBJPROP_ANGLEangle);
      angle += 45;
     
      ChartRedraw();
      Sleep(1000);
   }
   ObjectDelete(0name);
}

El texto muestra el valor actual del ángulo.