Tag: graphics2d

在jframe中模糊背景上创建一个透明的矩形

我在模糊背景上创建透明矩形时遇到问题。 我正在尝试在glasspane上完成这项任务。 这是我的代码片段。 void createBlur() { alpha = 1.0f; JRootPane root = SwingUtilities.getRootPane(jf); blurBuffer = GraphicsUtilities.createCompatibleImage(jf.getWidth(), jf.getHeight()); Graphics2D g2d = blurBuffer.createGraphics(); root.paint(g2d); g2d.dispose(); backBuffer = blurBuffer; blurBuffer = GraphicsUtilities.createThumbnailFast(blurBuffer, jf.getWidth() / 2); blurBuffer = new GaussianBlurFilter(5).filter(blurBuffer, null); } 其中,backBuffer和blurBuffer是BufferedImage和jf = JFrame的对象,alpha用于不透明度。 上述方法很好地创建了模糊效果。 这是在Panel上创建透明矩形的代码 protected void paintComponent(Graphics g) { int x = 34; int y = […]

如何在摇摆中将面板保存为图像?

您好我想将包含标签和按钮等组件的面板转换为图像文件。 我已经完成了以下代码。 图像已保存。 但面板的内容不可见或保存。 任何人都可以告诉我如何使用其组件保存面板。 码: package PanelToImage; import java.awt.Color; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; import javax.swing.*; public class sample extends JPanel { public JPanel firstpanel; public JPanel secondpanel; JLabel label1, label2; JButton button1, button2; public sample() { firstpanel = new JPanel(); firstpanel.setSize(400,300); firstpanel.setBackground(Color.RED); secondpanel = new JPanel(); secondpanel.setBackground(Color.GREEN); secondpanel.setSize(400,300); label1 = new JLabel(“label1”); […]

将Graphics2D转换为Image或BufferedImage

我这里有点问题。 我有一个applet,用户可以在其中“绘制”。 为此,我使用java.awt.Graphics2D。 但是,如何将用户绘制图像保存为JPEG图像,或者至少将其转换为BufferedImage或其他什么? 我不知道该怎么做。 谢谢。

为什么我不能访问我的面板的getWidth()和getHeight()函数?

我正在编写一个简单的程序来测试基本的GUI。 程序在屏幕中间打印一个字母,允许用户使用箭头键移动它。 一切正常,但是当我尝试在程序开头处将字母居中时,似乎getWidth和getHeight函数没有返回正确的数字。 这是包含我的Panel类的片段 static class LinePanel extends JPanel{ int xCenter = getWidth() /2; int yCenter = getHeight() /2; private int x = xCenter; private int y = yCenter; private char keyChar = ‘A’; public LinePanel(){ addKeyListener(new KeyAdapter(){ public void keyPressed(KeyEvent e) { switch (e.getKeyCode()) { case KeyEvent.VK_DOWN: y += 10; break; case KeyEvent.VK_UP: y […]

如何在Java中进行2D阴影投射?

我正在尝试按照本教程在Java中实现2D阴影投射方法: http : //ncase.me/sight-and-light/ 我想坚持使用Line2D和Polygon对象。 到目前为止,这是我的代码的主要部分: for (Polygon p : Quads.polygons) { for (int i = 0; i < p.npoints; i++) { osgCtx.setStroke(new BasicStroke(0.1f)); Line2D line = new Line2D.Double(mousePos.getX(), mousePos.getY(), p.xpoints[i], p.ypoints[i]); osgCtx.draw(line); } osgCtx.setStroke(new BasicStroke(1.0f)); osgCtx.draw(p); } 结果如下: 当涉及到构建线的参数forms时,我感到困惑。 我不知道如何用Java的方法实现数学。 有人能指出我在正确的方向,代码方面,实现这一点?

需要Line2D装饰技巧 – Graphics2D

我通过Graphics2D绘图在我的JPanel上放置了Line2D和Arc2D对象。 您可以在这个问题“ 如何使像素完美的Line2D – Graphics2D ”中看到它的一部分。 现在我想要实现的是,我想为所有Line2D和Arc2D对象创建两条平行线和弧。 在视觉上, 目前正常绘制Line2D和Arc2D, 想要像这样装饰它, 到目前为止我的想法, 我或许可以通过创建两条不同的线并从我的法线位置给出偏移+间隙和-gap来实现这一点。 然而,这将产生许多我不想要的对象。 现在,是否有可能使我的正常线条像这样厚, 并给它们一个边框并从中删除中间位? 是否有可能实现这一目标? 如果有,我可以请一些指示。 谢谢你的帮助。

如何在Java中平滑滚动JFrame

我的Java应用程序中有一个JFrame包含一个JPanel ,我在运行时创建了一些绘图对象。 问题是在滚动JFrame大图时滚动速度变慢而滚动条不能平滑移动。 请注意我正在使用Graphics 2D对象并在滚动操作上进行repaint 。 有没有办法平滑JFrame的滚动动作。 这是代码的一部分 public class DiagramPanel implements MouseListener{ int click=0; Point p1; Point p2; private Dimension panelDimension; …. // variables public void go() { p1 = new Point(); p2 = new Point(); JFrame f = new JFrame(); f.setVisible(true); f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); f.setSize(1200,500); panelx = new DiaPanel(); panelx.setOpaque(true); panelx.setBackground(Color.white); panelx.setAutoscrolls(true); panelx.addMouseListener(this); JScrollPane scrollPane […]

游戏的无限背景

我正在研究一个Java项目来模拟直升机在一个框架中的飞行。 直升机使用箭头键在屏幕上移动。 我希望直升机能够无限移动,也就是说,当直升机到达框架的边缘时,背景应朝相反的方向移动,以产生无尽的地形效果。 这是我到目前为止的代码: import java.awt.Graphics; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.image.BufferedImage; import java.net.URL; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.*; public class MainFrame extends JFrame { private static int FRAME_WIDTH = 800; private static int FRAME_HEIGHT = 500; public MainFrame() { add(new AnotherBackground(FRAME_WIDTH, FRAME_HEIGHT)); setTitle(“Helicopter Background Test”); setSize(FRAME_WIDTH,FRAME_HEIGHT); setLocationRelativeTo(null); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } public static void […]

paintComponent在绘图之上绘制其他组件

我正在尝试构建一个简单的绘图工具。 mouseDrag事件创建一个新的椭圆并使我的JPanel repaint() 。 这到目前为止工作正常。 但是,如果我在第一次触发mouseDrag事件之前按下任何按钮(或任何其他UI组件),则该按钮将绘制在我面板的左上角。 我已将代码隔离到此测试应用程序中: import java.awt.BasicStroke; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class Test extends JFrame { public Test() { final JPanel paintPanel = new JPanel(){ @Override protected void paintComponent(Graphics g) { Graphics2D g2d = (Graphics2D)g; g2d.setPaintMode(); g2d.setStroke(new BasicStroke(1)); […]

按指定的角度在java中旋转图像

这是在给定坐标处绘制形状的函数: public void drawTank(int x,int y){ int h = 50; int w = 50; graphic.setColor(Color.darkGray); graphic.drawRect(x, y, h, w); graphic.fillRect(x, y, h, w); graphic.setColor(Color.GRAY); graphic.drawRect(x+50, y+20, 35, 10); graphic.fillRect(x+50, y+20, 35, 10); } 我想在上面的函数中添加一个名为’angle’的变量,这样图像也会旋转指定的角度(drawTank(int x,int y,int angle))。 更新了示例 我试图做的是我初始化Graphics2D并分别更改了我的代码: g2D.setColor(Color.darkGray); g2D.drawRect(x, y, h, w); g2D.fillRect(x, y, h, w); g2D.setColor(Color.red); g2D.drawRect(x+50, y+20, 35, 10); g2D.fillRect(x+50, y+20, […]