为什么 tfVerticalCenter 和 tfBottom 在 TCanvas.TextRect 中不能按预期工作?

2024-07-03

考虑以下代码:

procedure TForm1.PaintBox1Paint(Sender: TObject);
var
  vRect : TRect;
  vFormat : TTextFormat;
  vStr : string;
begin
  vStr := 'This is some text';
  vRect := rect(10,10,50,130);
  vFormat := [tfCenter,tfVerticalCenter,tfWordBreak];
  PaintBox1.Canvas.Rectangle(vRect);
  PaintBox1.Canvas.TextRect(vRect,vStr,vFormat);
end;

我期待这样的事情

+--------+
|        |
|        |
|This is |
|  some  |
|  text  |
|        |
|        |
+--------+

但我明白了

+--------+
|This is |
|  some  |
|  text  |
|        |
|        |
|        |
|        |
+--------+

tfBottom 格式也是如此。水平文本格式(tfLeft、tfRight、tfCenter)按预期工作,但垂直格式则不然。谁能解释一下吗?


我不太确定,但仅当设置了单行时才允许使用 VerticalCenter。 这是因为 Canvas 依赖于本机 Windows 函数。如果您查看 Windows DrawText 函数,您将看到此限制。 如果你需要垂直居中,你必须自己计算

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

为什么 tfVerticalCenter 和 tfBottom 在 TCanvas.TextRect 中不能按预期工作? 的相关文章

  • 尝试访问 Delphi 7 中的 Excel 表时的提供程序选择

    我正在尝试使用 TAdoConnection 组件从 Delphi 7 连接到 Excel 表 问题是当我选择 Microsoft Jet OLEDB 4 0 Extended Properties Excel 8 0 时 我有时会收到错误
  • Kivy 中的脉动背景颜色

    我是 kivy 的新手 但我真的很坚持这一点 有没有办法在画布上有类似于 CSS 中的这种效果的脉冲背景 https codepen io LukeAskew pen gabgom https codepen io LukeAskew pe
  • 将四边形图像提取为矩形

    赏金更新 下列的Denis s https stackoverflow com questions 2992264 extracting a quadrilateral image to a rectangle 2999689 299968
  • 在画布中心写入 (0,0)-HTML5

    I m currently developing a drawing app which allows the user to click and drag to determine the size of the shape and al
  • 德尔福 LZMA

    我在 7 zip 网站上找到了一个 LZMA 库 但是没有用 我不使用文件 只使用流 出于某些原因 7 zip 站点上的库只将标头写入流而不压缩流 有人遇到了一些问题吗 有例子吗 知道 Delphi 的其他 LZMA 库吗 Tks 我自己没
  • 文本和矢量艺术的快速光栅化

    假设有a lot矢量形状 确定形状边界的贝塞尔曲线 例如一页充满小字母 创建位图的最快方法是什么 几年前我曾经看过一个演示 现在找不到了 其中一些人使用 GPU 来光栅化矢量艺术 他们能够实时放大 缩小页面 贝塞尔曲线形状的 GPU 渲染当
  • Delphi XE6 TForm.AutoSize

    我在 Delphi XE2 中编写了代码 运行得很好 但在Delphi XE6中它不起作用 我创建了一个 Tform 其属性 AutoSize 为 true 我使用 TPanel 将 alTop 与按钮对齐来创建其他一些面板 procedu
  • 如何检测 Delphi IDE 中的模块窗口何时打开?

    我正在编写一个 Delphi 插件 我需要检测模块 查看 调试窗口 模块 窗口何时打开 附加到 IDE 编辑器 我使用 IOTAEditorNotifier 在新的编辑器窗口打开时收到通知 但仅适用于源文件 这是用于从 IDE 编辑器接收通
  • 我们可以从 Delphi 调用 Native Windows API 吗?

    是否可以从 Delphi 应用程序中调用内核 Native API 喜欢nt and zw系统调用 您确实可以从 Delphi 调用本机 API Delphi 不附带本机 API 的标头翻译 因此 您需要提供自己的翻译 或使用预先存在的翻译
  • 将带有渐变描边的 svg 导入到 paper.js 项目中

    Paper js 不显示带有从 SVG 导入的渐变的路径 这是一个例子https codepen io Husband pen LoomQo https codepen io Husband pen LoomQo正如您所看到的 带有描边颜色
  • 如何在.pot文件中排除DBGrid.Column.FieldName

    我用Delphi 6做了一个应用程序 之后 我提取了一个 pot 文件 其中包含所有要翻译的字符串 问题是有些字符串不需要翻译 如果翻译就会产生问题 其中之一是 TDBGrid Columns x FiedlName 我尝试将这些行放入 g
  • 计算四边形的顶点法线

    可以说我有以下数组 float QuadVertices 4 2 float QuadNormals 4 2 我这样填写 Fill vertices for a 2d quad Renderer gt FillVertices QuadVe
  • 我可以使用什么脚本工具来自动测试 Delphi 程序? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个用于自动化测试的工具 我将使用脚本进行测试 而不仅仅是自动化 这意味着它不能只发送一些按
  • Delphi 中的 XML 命名空间

    我正在尝试访问 XML 文件中的一些节点 但无法使其工作 因为我可能不理解 Delphi 中的 XML Namepsaces
  • 如何更改 TTabItem 的样式

    请看下面的图片 我需要修改 TTabItem 处蓝色条的颜色 但我没有找到可以修改的地方 哪些属性或样式可以修改它 要更改选项卡项目的外观 您可以设计自定义样式 使用 TStyleBook 组件或将样式加载到样本并修改布局树上的 tabit
  • 如何更改 TTabItem 的样式

    请看下面的图片 我需要修改 TTabItem 处蓝色条的颜色 但我没有找到可以修改的地方 哪些属性或样式可以修改它 要更改选项卡项目的外观 您可以设计自定义样式 使用 TStyleBook 组件或将样式加载到样本并修改布局树上的 tabit
  • 为什么真正的变体布尔值在转换为整数时会变成 -1?

    我意识到人们不应该期望真实的Boolean成为1当投射到Integer 纯粹是他们变得非0 但是 结果会根据变量是否为变量而变化Variant but varBoolean or a Boolean 考虑以下 I Integer true
  • TMainMenu 中的透明 PNG 图像(带有 TImageList)

    我想在 TImageList 中加载具有透明背景的 PNG 并在 TMainMenu 中使用它 通过 TAction 然而 在 Delphi 中 背景只是黑色 This https stackoverflow com questions 4
  • 为什么设置表的 RecNo 属性不会移动到该记录?

    我有一个 TTable 组件 它使用 BDE 访问 DBase 表 表上没有索引 因此排序顺序是表中记录的物理顺序 如果我读取 RecNo 属性 它包含当前记录的预期编号 我的印象是 使用这个星座 BDE DBase 还可以设置 RecNo
  • R:按比例缩放 ggplot2、点阵或基本 R 图的函数

    在 R 中 我总是觉得很烦人的是 基本 R lattice 和 ggplot2 绘图都使用文本和绘图符号大小的绝对点大小 这意味着 如果您增加绘图窗口的大小以获取填充页面的图表 windows width 5 height 5 qplot

随机推荐

  • Unicode URL 解码

    对 unicode 字符进行 URL 编码的常用方法是将其拆分为 2 HH 代码 u4161 gt 41 61 但是 unicode在解码时是如何区分的呢 你怎么知道 41 61 is u4161 vs x41 x61 Aa 是需要编码的
  • JSF 2 - Ajax - 表单未完全呈现

    我使用新选择的语言环境呈现表单的 Ajax 代码是
  • Android Studio:房间数据库实现上出现“尝试分配较弱的访问权限”错误

    我正在尝试实施房间数据库 我已经完成了以下步骤官方网站 https developer android com training data storage room AppDatabase java 文件如下 import android
  • EF Core EnableSensitiveDataLogging 未按预期工作

    我正在使用 MySql 的 EF Core 2 1 1 并且我有以下代码来启用将 ef core 转换为 SQL 查询的日志记录 protected override void OnConfiguring DbContextOptionsB
  • Scala 是一个更好的 println

    我经常发现自己在做这样的事情 println foo 当我想做的时候 println foo 编译器不允许这样做 还有 println很拗口 我真的只想说 echo foo 因此 在基础包对象中 我创建了 println 的 echo 版本
  • 使用 Visual Basic (MS Access 2000) 将原始数据发送到 ZPL 打印机

    这是我能找到的全部 但没有一个起作用 选项比较数据库 选项显式 Private Type DOCINFO pDocName As String pOutputFile As String pDatatype As String End Ty
  • 如何在 ASP.NET 中提供 resx 文件?

    我怎样才能提供适当的语言环境 resx文件到 ASP NET 中的 http 客户端 e g GET App LocalResources MeshModdler resx 背景 我有一个客户端二进制文件 需要向网络服务器请求适当的语言资源
  • 忽略非 Spark 配置属性:hive.exec.dynamic.partition.mode

    如何运行 Spark shellhive exec dynamic partition mode nonstrict 我尝试 如在这里建议 https stackoverflow com a 53581393 287948 export S
  • 直观地比较两个图像

    我希望能够检查两个图像在一定阈值内是否看起来相同 这两张图像在肉眼看来是相同的 但其中一张的颜色略有不同 我尝试过以下示例 http www vb helper com howto net image compare threshold h
  • 如何调试 WScript.Shell 对象的 ASP 权限问题?

    我必须从一些旧版 ASP 应用程序运行命令行操作 这是我的代码 这是我收到的结果 Microsoft VBScript 运行时错误 800a0046 没有权限 test asp 第 6 行 你知道如何让 IIS6 运行这段代码吗 注意 当然
  • 在bash中将数组中的一个键关联多个值

    我有一个文本文件 如下所示 1 aaaa 2 bbbb 3 cccc 4 dddd 2 eeee 2 ffff 4 gggg 我想将它们映射到某种关联数组中 以便我可以访问例如与键 2 关联的所有值以及与键 4 关联的所有值等 1 gt a
  • “代理属性”是好的风格吗?

    我有一个带有字符串属性的类 它实际上是用分隔符连接的几个字符串 我想知道拥有这样的代理属性是否是一种好的形式 public string ActualProperty get return actualProperty set actual
  • 实体框架代码优先多列外键

    首先使用代码我设计了 3 个类 class User public Int32 ID get set public virtual ICollection
  • 我什么时候应该使用 mb_strpos();通过 strpos();?

    呵呵 看着所有这些字符串函数 有时我会感到困惑 一个人一直在使用mb 函数 其他 简单的 所以问题很简单 我应该什么时候使用mb strpos 我什么时候应该选择普通的 strpos 是的 我知道这一点mb 函数代表多字节 但这真的意味着
  • 应用程序设计和AppDelegate

    我正在为我一直在进行的一些本科生研究开发一个 iPhone 应用程序 遗憾的是 我的学校不提供软件工程 设计课程 因此当涉及到面向对象设计的最佳实践问题时 我会阅读大量书籍 我的困境 我的应用程序加载一个视图 v1 在用户单击按钮时 v1
  • 如何从 elrm 摘要输出中提取系数

    我使用该包对我的数据集进行了精确的逻辑回归elrm 我将其与普通逻辑回归进行比较 我能够在普通逻辑回归上运行引导程序 我感兴趣的统计数据是估计系数和 p 值 但是 我无法运行 elrm bootstrap 因为我无法从输出中提取所需的系数
  • 当数组可能包含或不包含主元素时进行就地分区

    有没有一个就地分区 http www cs auckland ac nz jmor159 PLDS210 qsort1a html算法 用于快速排序 http en wikipedia org wiki Quicksort实现 不依赖于数组
  • ASP.NET 中的 REST WCF 服务和会话‏

    如果可以的话请帮忙 我一直在尝试从 WCF REST 服务中访问 asp net 应用程序的当前会话对象 根本没有成功 从服务访问的会话对象与 aspx 页面中的会话对象不同 所以 这是我的问题 是否可以访问当前会话REST通过 HttpC
  • Rails button_to 失败,路径不存在,路径已存在

    编写我的第一个非常简单的 Rails 应用程序 一个简单的管理应用程序 用于跟踪我们一个部门的工作 为人员生成的索引页面上有一个 link to 用于添加新人员 我尝试将其更改为 button to 但它失败了 说路径 people new
  • 为什么 tfVerticalCenter 和 tfBottom 在 TCanvas.TextRect 中不能按预期工作?

    考虑以下代码 procedure TForm1 PaintBox1Paint Sender TObject var vRect TRect vFormat TTextFormat vStr string begin vStr This is