java - 获取字符串的像素

标签 java string graphics pixels

在使用 drawstring() 方法做一些事情时,我想知道是否有一种方法可以从字符串参数中提取像素数组,以便返回类型适合 2d像素阵列? 该方法还需要调整尺寸和着色。

我已经成功地使用 drawstring() 将字符串绘制到附加了像素监听器的图形参数,然后简单地从该特定区域获取数据。 但我想知道它们是否是一种无需绘制即可获取像素的方法?

我希望能够使用我拥有的像素引擎添加波浪、3d 旋转和炫酷粒子效果等效果,因此绘制然后抓取像素需要很大的更新空间!

请记住,在将字符串提取到像素数组之前,会对其进行缩放、着色和转换,因此绘制一次字符串将无法正常工作。

最佳答案

绘制字符串的操作很复杂。字符串中的文本数据首先必须被解码为给定字体的一系列字形。然后通过与字体曲线定义相交的线以您正在渲染的比例对它们进行光栅化。 (实际上,通过一个称为“提示”的过程,这甚至更加复杂。)一旦您对字形进行了光栅化,您就拥有了可以发送到显示设备的像素阵列。

你想要做的是通过将文本转换为一组从字体字形创建的曲线来在中间中断这个过程。如下代码将为您提供曲线:

Graphics graphics;
Font font = new Font("ComicSans", Font.PLAIN, 12);
GlyphVector vector = font.createGlyphVector(graphics.getFontMetrics(font).getFontRenderContext(), "Lorem ipsum");
Shape shape = vector.getOutline();
// transform shape

关于java - 获取字符串的像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27943953/

相关文章:

java - 如何使用java添加collections.Frequency中的所有值以获取重复单词

java - 添加验证以防列表返回 null 的最佳方法?

c++ - OpenGL 两个屏幕

java - : es2, sw 的图形设备初始化失败

java - 如何将 drawString() 文本设为粗体?

java - 下载二进制文件会抛出 org.jvnet.mimepull.MIMEParsingException : java. io.IOException:流已关闭

java - Java 中的 ISO-8859-1 编码是二进制安全的吗?

java - 在 Java 中动态添加带有属性文件消息的字符串?

java - Jython,只使用来自 Java 的 Python 的方法?

mysql - 删除mysql中字符串后面的所有内容