如何解决从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
,用于跟踪列表中要开始读取的位置。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。