java graphics2d绘制横线_java – 将Graphics2D绘制到另一个Graphics2D

博客探讨了如何在Java中从一个Graphics2D对象绘制到另一个,特别是在解决打印时的文本渲染问题。作者遇到Arial字体在特定尺寸下线条被剪切的问题,提出使用双缓冲技术和drawImage()方法来解决。文章提供了代码示例,展示如何从SunGraphics2D绘制到打印用的Graphics2D。
摘要由CSDN通过智能技术生成

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

让我解释.

我有打印问题,当我在屏幕上显示JTextArea或JTextPanel时,内部使用sun.java2d.SunGraphics2D,但是当我打印其使用的sun.print.PeekGraphics和sun.awt.windows.WPathGraphics时.

问题出在某些字体上,比如Arial.在某些尺寸中,线条被切割.

我已经尝试了很多方法来渲染打印中的文本,Graphics2D.drawString,SwingUtilities2.drawString,TextLayout.drawString,但在某些情况下仍然会剪切线条,或者没有剪切线条,但是某种理由会使消失的白色空间变得消失.

所以我的想法是尝试使用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();

...

}

别的地方:

/*Now lets draw the backbuffer INTO the screen */

g2d.drawImage(doubleBuffer, null , 0, 0);

编辑:嘿,我意识到它不完全如上所述…… lemme想一想.

Edit2:好的,上面仍然可以使用一个样本,但从一个Graphics2D绘制到另一个Graphics2D的步骤顺序应如下:

1.使用drawGraphics()从Graphics2D对象到Image / BufferedImage对象.

2.从上面的Image / BufferedImage中,使用itscreateGraphics()提取其成员Graphics2D对象.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值