如何对齐SpriteBatch.DrawString绘制的文本?

2024-03-02

有没有一种简单的方法可以将文本向右和居中对齐(而不是默认的左对齐)?


我使用这段代码:

 [Flags]
 public enum Alignment { Center=0, Left=1, Right=2, Top=4, Bottom = 8 }

 public void DrawString(SpriteFont font, string text, Rectangle bounds, Alignment align, Color color )
    {
        Vector2 size = font.MeasureString( text );
        Vector2 pos = bounds.GetCenter( );
        Vector2 origin = size*0.5f;

        if ( align.HasFlag( Alignment.Left ) )
            origin.X += bounds.Width/2 - size.X/2;

        if ( align.HasFlag( Alignment.Right ) )
            origin.X -= bounds.Width/2 - size.X/2;

        if ( align.HasFlag( Alignment.Top ) )
            origin.Y += bounds.Height/2 - size.Y/2;

        if ( align.HasFlag( Alignment.Bottom ) )
            origin.Y -= bounds.Height/2 - size.Y/2;

        DrawString( font, text, pos, color, 0, origin, 1, SpriteEffects.None, 0 );
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何对齐SpriteBatch.DrawString绘制的文本? 的相关文章

随机推荐

  • 如果所有子节点都分配了类,则选择父节点

    我正在寻找一种有效的方法来遍历无序列表 该列表包含多个级别 其中包含类 selected 如果组中的所有 UL LI 都具有 selected 类 我需要将 selected 类添加到子 UL 的父 LI 中 ul li one lt th
  • 从 C++ 使用 Neo4j 数据库

    我的问题是我想从 C 程序使用 Neo4j 数据库 我读了很多 但仍然不知道如何开始 首先 我想在 Neo4j 和 C 之间建立连接 并且我想从 C 程序创建节点 任何人都有示例代码 或者有人可以帮忙 我该如何开始 对于即将推出的二进制远程
  • Rserve - 一台服务器上有多个实例?

    是否可以在一台服务器上同时运行 Rserve 的多个实例 例如 10 个实例意味着 10 个独立的 R 工作区通过同一台计算机上的 Rserve 监听不同端口 在 Oleksandr指定的同一文档中 它在第5 6页明确指出 在Windows
  • 透视变换三角点

    我试图找到从一个三角形到另一个三角形的等效点 理想情况下 我希望能够给出三角形 A 的 3 个点和三角形 B 的 3 个点 然后计算变换矩阵 然后将其应用于该点以找到等效点 我为此找到了一些 JavaScript 库 方法 但它们都使用四边
  • 使用 JavaScript 的 Chrome 和 Safari XSLT

    我有以下应用 XSLT 样式的代码 Test Xml xslTransform function xml xsl try code for IE if window ActiveXObject ex xml transformNode xs
  • 看不到 Safari 开发者 Timeline 的 Memory Instrument

    我正在尝试分析 Safari 浏览器中的 Web 应用程序内存使用情况 我在几个网站上看到 Safari 的 Web Inspector Timeline 可用于分析 Web 应用程序内存 但我没有看到 内存 选项 这是我所看到的 以下网站
  • 在 rich:dataTable 中使用 a4j:repeat 或 ui:repeat 无法正确呈现单选按钮

    使用时
  • 使复合小部件可拖动时出现问题

    我对 gwt n dnd 相对较新 我创建了一个复合小部件 当我尝试使复合小部件的对象可拖动时 它会抛出异常 dragHandle 必须实现 HasMouseDownHandlers HasMouseUpHandlers HasMouseM
  • Expression.ToString() 有效吗?

    我有一个生成的 lambda 但是当我想观看它时 它就像一个普通的 lambda 它只是不显示任何内容 当我打电话时expr Body ToString 我得到以下信息 var compareA 但表达式的 DebugView 工作正常 L
  • 如何使用两个不同的节点版本运行两个不同的nodejs应用程序[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我们有两个 Node js 应用程序 这两个应用程序不能在同一节点版本中运行 一个应用程序只能在node4 8 3中运行 另一个应用程
  • MapFragment 样式为 Dialog 导致 TextView 透明

    这是设置 我正在构建和显示样式为居中对话框的活动 这是为了显示不应在设备上全屏显示的分层内容 一种类型的内容是地图 所以我已经成功地将 MapFragment 加载到对话框样式的 FragmentActivity 中 这确实有效 问题是当我
  • 在 Python、NumPy 和 R 中创建相同的随机数序列

    Python NumPy 和 R 都使用相同的算法 Mersenne Twister 来生成随机数序列 因此 从理论上讲 设置相同的种子应该会在所有 3 个中产生相同的随机数序列 但事实并非如此 我认为这 3 个实现使用不同的参数导致了这种
  • 使用 Cocoa 和 Core Data 自动保存

    我正在开发一个非基于文档的核心数据应用程序 我希望更改发生时能够保存 这是用户对此类应用程序的期望 这也是苹果公司实施的iPhoto or iTunes 一种强力方法是设置一个计时器来频繁保存 然后 由保存触发的方法将吞掉所有验证错误 以免
  • Emacs 使用 Git-Rebase 将缓冲区恢复到奇怪的先前状态

    我在 OS X 上使用 Emacs 23 3 1 我从终端发出 git 命令 而不使用任何 Emacs 的 VC 功能 我将 Emacs 设置为在修改文件时刷新 这是通过我的 emacs 文件中的这些行启用的 custom set vari
  • 使用 javascript 处理文本区域上的 Enter 键

    我在页面上有 5 个文本区域 我希望在第一个文本区域上按 Enter 键时发生特定事件 在其他文本区域上按 Enter 键时发生不同的事件 您能否建议如何实现这一目标
  • 替代

    我正在尝试修复为我编写的旧脚本 我需要它运行而无需 我想从脚本内部运行该函数 而无需像该命令那样的内联代码 抱歉 我不是 JS 专家 但是我该怎么做呢 或者 如果您使用的是 jQuery function Your code here
  • BITS 多域传输文件

    如何在不同域的服务器之间传输文件 i e PS C Users Desktop gt Import Module bitstransfer PS C Users Desktop gt c get credential PS C Users
  • 在R中进行线性回归时,如何有条件地删除因子的NA观察?

    我正在尝试在 R 中建立一个简单的线性回归模型 模型中有三个因子变量 模型是 lm Exercise Econ Job Position 其中 锻炼 是数字因变量 即锻炼的时间量 经济 工作 职位 都是因子变量 经济 是指一个人是否有工作
  • 需要 T SQL 合并示例来帮助理解

    下列 MERGE dbo commissions history AS target USING SELECT amount requestID AS source amount request ON target request sour
  • 如何对齐SpriteBatch.DrawString绘制的文本?

    有没有一种简单的方法可以将文本向右和居中对齐 而不是默认的左对齐 我使用这段代码 Flags public enum Alignment Center 0 Left 1 Right 2 Top 4 Bottom 8 public void