以任意角度旋转文本

文本类型的对象 - 标签 OBJ_TEXT(采用报价坐标)和面板 OBJ_LABEL(采用屏幕坐标)- 允许你对文本标签进行任意角度旋转。为此,提供了类型为double的 OBJPROP_ANGLE 特性。该特性包含相对于对象正常位置的角度,以度为单位。正值将对象逆时针旋转,负值将对象顺时针旋转。

不过需要注意的是,相差 360 度倍数的角度实际效果相同。例如,+315 度和 - 45 度即为等效角度。旋转围绕对象的锚点进行(默认情况下为左上角)。

将 OBJ_LABEL 和 OBJ_TEXT 对象旋转 45 度的整数倍

将 OBJ_LABEL 和 OBJ_TEXT 对象旋转 45 度的整数倍

可以使用ObjectAngle.mq5脚本来检查 OBJPROP_ANGLE 特性对某一对象的影响。该脚本将在窗口中央创建一个文本标签 OBJ_LABEL,随后开始以 45 度为单位进行周期性旋转,直到用户停止该进程。

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);
}

文本将显示当前的角度值。