c# - 从 SharpDX.Direct2D1 使用 DrawText 时如何检测文本溢出?
问题描述
我正在使用以下方法绘制RenderForm
文本SharpDX
:
string s = "";
for (int i = 0; i < log.Count; i++)
s += log[i] + "\n";
renderView.DrawText(s, textFormat, logBoundsRect, brush, DrawTextOptions.Clip);
然而,最终日志列表变得足够长以使文本溢出。如何检测此溢出,以便我可以相应地调整我的日志列表的绘制量?
解决方案
感谢@Simon Mourier 的评论,我想出了如何做到这一点。
string s = "";
TextLayout tl;
while (true) {
s = "";
for (int i = logPosition; i < log.Count; i++) {
s += log[i];
if (i + 1 < log.Count)
s += "\n";
}
tl = new TextLayout(factory, s, textformat, logBoundsRect.Width, logBoundsRect.Height);
if (!(tl.Metrics.Height > logBoundsRect.Height))
break;
logPosition++;
tl.Dispose();
};
renderView.DrawTextLayout(logBoundsRect.TopLeft, tl, brush);
tl.Dispose();
logPosition
是一个全局int
变量,用于跟踪列表中从何处开始读取。
推荐阅读
- azure-devops - Azure SQL 服务器在创建后的一段时间内是否不可用/无法访问?
- ruby - 如何在不使用元帅的情况下在 ruby 中进行深度复制?
- r - rstan 包从 github 安装
- jenkins - 如何从 Jenkins 克隆到的 GitHub 目录运行命令?
- ios - 基于 Firestore 布尔值在 Xcode 中显示图像
- azure-active-directory - 验证 Azure AD 颁发的不记名令牌 - Microsoft 身份平台时,会在后台执行哪些步骤?
- python - Matplotlib 与 fig.text 裁剪
- javascript - 是否可以压缩并发送本地(到应用程序)目录而不需要用户选择一个?
- javascript - 在 PHP 中动态插入数组中的纬度/经度到天气 API 调用
- swift - 刷新 UserDefaults 变量不起作用