Eze*_*iel 5 java printing swing text-rendering graphics2d
有可能从一个画Graphics2D到另一个Graphics2D吗?
让我解释。我已经打印问题,当我显示JTextArea或JTextPanel屏幕,internaly其使用sun.java2d.SunGraphics2D,但是当IM打印的使用sun.print.PeekGraphics和sun.awt.windows.WPathGraphics。问题出在某种字体上,例如Arial。在某些尺寸下,线被切掉。我已经tryed了很多办法来呈现在印刷文本,Graphics2D.drawString,SwingUtilities2.drawString,TextLayout.drawString,但在某些情况下,线依然切割,或线不被切断,但某种理由让disapear空格。
因此,我的想法是尝试使用sun.java2d.SunGraphics2D渲染组件,然后通过sun.print.PeekGraphics或将表面“复制”到打印机sun.awt.windows.WPathGraphics。
提前致谢。
是的,这是可能的,这就是许多 Java 游戏中实现双缓冲的方式。你需要的是 Graphics2D 的 drawImage() 方法,它接受另一个 Graphics2D 对象来绘制。例如,来自我的一个小游戏:
private Main(){
...
/* Create the backbuffer as a BufferedImage object */
this.doubleBuffer = new BufferedImage(this.WIDTH, this.HEIGHT, BufferedImage.TYPE_INT_RGB);
/* create a Graphics 2D object to draw INTO this backbuffer */
this.doubleBufferG2D = (Graphics2D) doubleBuffer.createGraphics();
...
}
Run Code Online (Sandbox Code Playgroud)
别的地方:
/*Now lets draw the backbuffer INTO the screen */
g2d.drawImage(doubleBuffer, null , 0, 0);
Run Code Online (Sandbox Code Playgroud)
编辑:嘿,我意识到它并不完全像上面那样……让我想一想。
Edit2:好吧,上面仍然可以用作示例,但是从一个 Graphics2D 绘制到另一个 Graphics2D 的步骤顺序应该是这样的: 1. 使用 drawGraphics() 从 Graphics2D 对象到 Image/BufferedImage 对象。2. 从上面的Image/BufferedImage中,使用itscreateGraphics()提取其成员Graphics2D对象。
| 归档时间: |
|
| 查看次数: |
1653 次 |
| 最近记录: |