微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从SharpDX.Direct2D1使用DrawText时如何检测文本溢出?

如何解决从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 举报,一经查实,本站将立刻删除。