【问题标题】:How to get the size of a GUI Label?如何获取 GUI 标签的大小?
【发布时间】:2014-02-05 04:19:12
【问题描述】:

我正在用 Unity3D 开发一个游戏,它是 OnGUI() 函数中的 GUI 代码。在我可以在新的 Rect() 参数中指定其尺寸之前,有没有办法使用 GUIStyle [和字体] 获取 GUI 标签的大小?如果有任何可能的方法,我可以使用它来根据屏幕分辨率等某些因素动态更改标签的尺寸......

【问题讨论】:

    标签: c# unity3d unityscript


    【解决方案1】:

    如果您使用 Unity,则不应使用 System.Drawing。 请改用http://docs.unity3d.com/Documentation/ScriptReference/GUIStyle.CalcSize.html。 例如:

    Vector2 size = yourStyle.CalcSize (new GUIContent ("your text"));
    

    如果您使用当前皮肤中指定的样式,请将 yourStyle 替换为 GUI.skin.[...] (http://docs.unity3d.com/Documentation/ScriptReference/GUISkin.html)。 然后你可以这样使用它:

    GUI.Label (new Rect (anchorX, anchorY, size.x, size.y), "your text");
    

    【讨论】:

      【解决方案2】:

      我不确定它是否适用于您的情况,但可能会帮助您朝着正确的方向前进

      /// <summary>
      /// Calculate Render Width
      /// </summary>
      /// <param name="str"></param>
      /// <param name="fontFamily"></param>
      /// <param name="fontSize"></param>
      /// <returns></returns>
      public static float GetWidthOfString(string str, string fontFamily, int fontSize)
      {
          var font = new System.Drawing.Font(fontFamily, fontSize, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);
          var size = TextRenderer.MeasureText(str, font); // GDI              
      
          return size.Width;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-08
        • 2015-04-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多