在使用 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