gpt4 book ai didi

java - 将 Graphics2D 绘制到另一个 Graphics2D

转载 作者:搜寻专家 更新时间:2023-10-31 20:12:35 43 4
gpt4 key购买 nike

可以从一个 Graphics2D 绘制到另一个 Graphics2D 吗?

让我解释一下。我有打印问题,当我在屏幕上显示 JTextAreaJTextPanel 时,内部使用了 sun.java2d.SunGraphics2D,但是当我打印它时使用了 sun.print.PeekGraphicssun.awt.windows.WPathGraphics。问题出在某种字体上,例如 Arial。在某些尺寸中,线条被切割。我尝试了很多方法来渲染打印中的文本,Graphics2D.drawStringSwingUtilities2.drawStringTextLayout.drawString,但在一些情况下行仍然被切断,或者行没有被切断但某种理由使空白消失。

所以我的想法是尝试使用 sun.java2d.SunGraphics2D 渲染组件并通过 sun.print.PeekGraphicssun.awt.windows.WPathGraphics 将表面“复制”到打印机

提前致谢。

最佳答案

是的,这是可能的,这就是在许多 Java 游戏中实现双缓冲的方式。您需要的是 Graphics2D 的 drawImage() 方法,该方法接受另一个 Graphics2D 对象进行绘制。例如来 self 的一个小游戏:

   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();
...
}

其他地方:

/*Now lets draw the backbuffer INTO the screen */
g2d.drawImage(doubleBuffer, null , 0, 0);

编辑:嘿,我意识到它与上面的不完全一样......让我考虑一下。

Edit2:好吧,上面的例子仍然可以使用,但是从一个 Graphics2D 绘制到另一个 Graphics2D 的步骤顺序应该是这样的:1. 使用 drawGraphics() 从 Graphics2D 对象到 Image/BufferedImage 对象。2. 从上面的Image/BufferedImage中,使用itscreateGraphics()提取其成员Graphics2D对象。

关于java - 将 Graphics2D 绘制到另一个 Graphics2D,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18315716/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com