当前位置:  开发笔记 > 编程语言 > 正文

多彩多姿的文本的Java图形库

如何解决《多彩多姿的文本的Java图形库》经验,为你挑选了1个好方法。

我想知道在Java中处理多色文本的推荐库或过程.我目前对java.awt.Graphics的使用虽然是函数,但似乎比必要的要复杂一些.

主要问题涉及频繁更改颜色,每当需要新颜色时创建一个新的java.awt.Colour()对象(并且它通常不是预定义值之一.)我已经跟踪以前使用的rgb值,但是有可能颜色可能会变为我绘制的每个角色的唯一值:

java.awt.Color colorRender = new java.awt.Color(rgb);
g.setColor(colorRender);

我还在我的代码上运行了一个分析器,并确定了极端情况下的次要瓶颈.我怀疑它可能是用于绘制单个字符的方法,但在确定所述字符时可能存在开销:

char[] c = new char[1]; // Created once for many uses
/* ... */
g.drawChars(charRender, 0, 1, x, y);

我看过BufferedImage类 - 虽然它非常适合像素级图形,但它并不直接支持绘图字符.



1> Dave Ray..:

我假设您正在将文本渲染到任意组件(通过paintComponent()),而不是尝试修改JTextPane,JLabel或其他预先存在的窗口小部件中的文本颜色.

如果是这种情况,您应该考虑使用AttributedString和TextAttribute.这些允许您为字符串中的各种字符范围分配不同的样式(颜色,字体等),然后使用Graphics.drawString(...)呈现整个字符串.这样,底层图形子系统将在渲染过程中处理对图形状态的任何必要更改,使您的代码更具可读性,并且可能更快.

这是一个示例用法.

当然,正如其他人所提到的,你也应该缓存你的Color对象而不是一遍又一遍地重新创建它们.

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有