Tag: graphics2d

Graphics2D.drawString中的换行符出现问题

g2是Graphics2D类的一个实例。 我希望能够绘制多行文本,但需要换行符。 以下代码在一行中呈现。 String newline = System.getProperty("line.separator"); g2.drawString("part1\r\n" + newline + "part2", x, y);

旋转BufferedImage实例

我无法获得旋转的BufferedImage显示。 我认为旋转工作正常,但我实际上不能将其绘制到屏幕上。 我的代码: Class extends JPanel { BufferedImage img; int rotation = 0; public void paintComponent(Graphics g) { g.clearRect(0, 0, getWidth(), getHeight()); img2d = img.createGraphics(); img2d.rotate(Math.toRadians(rotation), img.getWidth() / 2, img.getHeight() / 2); g.drawImage(img, imgx, imgy, null); this.repaint(); } } 这不适合我。 我找不到任何方法将旋转的img2d绘制到g 。 编辑:我有多个被绘制到g上的对象,所以我不能旋转。 我需要能够单独旋转的东西。

适合/缩放JComponent到正在打印的页面

我正在尝试缩放我的组件,以便它可以放在单个打印的页面上(纵向或横向) gDiagram.getComponent() 是我试图打印的组件(JPanel)。 以下是我如何基于如何打印单个JPanel的内容? /** * Prints the diagram. */ public void printDiagram() { PrinterJob pj = PrinterJob.getPrinterJob(); pj.setJobName(" Print Component "); pj.setPrintable(new Printable() { @Override public int print(Graphics g, PageFormat pf, int pageNumber) throws PrinterException { // TODO Auto-generated method stub if (pageNumber > 0) { return Printable.NO_SUCH_PAGE; } Graphics2D g2 = (Graphics2D) g; […]

如何使线条animation更stream畅?

我正在Java中制作一个简单的animation,我正在尽可能地使它变得stream畅。 我只使用每个Shape对象的* .Double内部类,并在Graphics2D对象上设置抗锯齿。 只要我只使用fill()方法,但是如果我也使用draw()方法在同一个Shape的周围绘制线条,这一切都可以工作,这些线条的animation是逐个像素的。 canvas上的每个矩形都具有此方法来绘制自己。 它每隔20ms移动一次,整个canvas使用Timer和TimerListener重新绘制。 import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class AnimationTest { public static void main(String[] args) { JFrame frm = new JFrame("Test"); frm.setBounds(200, 200, 400, 400); frm.setResizable(false); frm.setLocationRelativeTo(null); AnimationCanvas a = new AnimationCanvas(); frm.add(a); frm.setVisible(true); a.startAnimation(); } } class AnimationCanvas extends JPanel { SimpleSquare[] squares = new SimpleSquare[2]; […]

用AffineTransform旋转图像

我有class级叫Airplane 。 在这个类里面我有variablesimg这是一个BufferedImagetypes。 更重要的是,我得到了类WorldMap ,它覆盖了函数paintComponent(Graphics g) : @Override public void paintComponent(Graphics g) { Graphics2D g2d = (Graphics2D) g; g2d.drawImage(mapa, 0, 0, getWidth(), getHeight(), null); drawAirplanes(g2d); } 函数drawAirplanes()看起来像这样: private void drawAirplane(Graphics2D g){ for(Samolot i: s){ i.rotateAirplane(); g.drawImage(i.getImg(),i.getX(),i.getY(),(int)i.getDim().getWidth(),(int)i.getDim().getHeight(), null); } } 它只需要1)旋转飞机(BufferedImage里面的飞机对象)2)吸引他。 我的Airplane.rotateAirplane()函数如下所示: public void rotateSamolot() { AffineTransform tx = new AffineTransform(); tx.translate(10,10); //10, 10 is height […]

使用getGraphics()绘制对象而不扩展JFrame

我如何绘制一个没有类的对象(它扩展了JFrame )? 我find了getGraphics方法,但它不绘制对象。 import javax.swing.*; import java.awt.*; public class Main { public static void main(String[] args) { JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); frame.setSize(600, 400); JPanel panel = new JPanel(); frame.add(panel); Graphics g = panel.getGraphics(); g.setColor(Color.BLUE); g.fillRect(0, 0, 100, 100); } }

Java:旋转图像

我需要能够单独旋转图像(在Java中)。 到目前为止,我唯一发现的是g2d.drawImage(image,affinetransform,ImageObserver)。 不幸的是,我需要在一个特定的点上绘制图像,而且没有任何方法可以使图像单独旋转,并且允许我设置x和y。 任何帮助表示赞赏

拉伸JLabel文本

有没有办法使JLabel的文本伸展到100%的高度? 当组件尺寸改变时,我需要更新文本。 我看到了一些可以工作的解决scheme。 它涉及计算和设置字体大小,所以它看起来是正确的高度。 我也将不得不添加监听器,当高度变化,使其作出回应,我不知道我应该这样做。 我希望与布局经理有更好的解决scheme,但是找不到任何东西。 有任何想法吗?

使用Graphics2D覆盖BufferedImage上的文本并返回一个BufferedImage

我查了类似命名的问题,但是他们没有回答这个用例。 基本上,我是覆盖一些文本(文本)在给定的坐标(x,y)我有一个包中的下面的function; protected BufferedImage Process2(BufferedImage image){ Graphics2D gO = image.createGraphics(); gO.setColor(Color.red); gO.setFont(new Font( "SansSerif", Font.BOLD, 12 )); gO.drawString(this.text, this.x, this.y); System.err.println(this.text+this.x+this.y); return image; } 我觉得我很明显错过了一些东西。 我可以findGraphics2D的每一个引用是处理游戏或直接写入文件,但我只想要一个BufferedImage返回。 与覆盖“渲染” 在当前的代码中,图像显示在最后不变。 谢谢!

通过当前日期

似乎无法修复代码中的Graphics2D缺乏,那么我必须为动画设置修复大小,否则一些开始外面Rectangle 490 x 490冻结或在屏幕上晃动 我的SSCCE import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.image.BufferedImage; import java.util.ArrayList; import java.util.Random; import java.util.Vector; import java.util.regex.Pattern; import javax.swing.*; import javax.swing.table.*; public class OneTwoThree implements Runnable { private String testS; private JFrame frame = new JFrame("frameTitle"); private JScrollPane tblS = new JScrollPane(); private JTable tbl; private Vector<String> rOrH; private long t1 […]