![](/img/trans.png)
[英]C# Graphics.DrawString and Graphics.ScaleTransform conflict?
[英]Graphics.DrawString inline font change C#
我正在创建一个应用程序,该应用程序将以格式正确的段落显示JSON数据。 JSON数据具有标题,副标题,正文等内容。在正文中可以有链接(我只需要将其显示为蓝色并带有下划线),这就是我遇到麻烦的地方。
该程序基于.net Compact Framework,并且只给了Graphics对象和JSON对象(以及矩形,字体,颜色)。 无论如何,是否可以很好地绘制文本字符串,并将所有链接更改为不同的颜色/字体?
我的想法是画出每个单词,然后在出现单词时立即更改字体。 听起来效率很低。 有没有更好的办法?
谢谢 :)
噢,ps如果在DrawString方法中有一种简单的方法可以确定矩形的正确高度,这样就不会剪切任何文本,那也将非常有帮助!
更新:我想出了我的PS问题:) http://www.mobilepractices.com/2007/12/multi-line-graphicsmeasurestring.html
好的,我最终要做的是添加一个带有特殊“ Word”对象的自定义绘制方法。 Word对象包含字符串,颜色和字体指针。 我将文本解析为Word对象的字典,然后遍历所有对象,并使用以下sudo代码绘制文本
int maxWidth = Width
int curX = 0
int curY = 0
foreach word in words
if curX > 0
word = DrawWordUntilWidth(out curX, out curY, word, maxWidth)
if word != null
DrawWord(out curX, out curY, word, maxWidth)
DrawWordUntilWidth
将DrawWordUntilWidth
单词中的word
(由空格和“-” curX > maxWidth
),直到curX > maxWidth
,然后绘制适合的单词,将单词中的字符串截断,将curY += maxWordHeight
设置为0,将curY += maxWordHeight
设置curY += maxWordHeight
的最大高度。该行上使用的字体。 如果单词中的所有word
都用完了,则返回null,否则返回被删节的单词。
DrawWord
非常相似,但是假设curX始终为0,因此它可以绘制整个字符串,然后相应地设置curX和curY。
它的效果很好,因为螺柱很少,并且渲染非常流畅。 如果有人有更好的解决方案,请告诉我!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.