Tag: graphics2d

如何在java中使用y = mx + b绘制一条线?

所以我有一个解决线性方程组的程序,但这不相关。 那么我的程序会以下列forms传递两个线性方程:y = mx + b。 我不知道如何使用Graphics2D绘制图形,我在解决它时遇到了一些麻烦。 现在我不知道所以我没有可以告诉你的代码,但我可以告诉你: 我的程序正确地将Ax + By = C转换为y = mx + B. 在某些代码中使用drawLine()方法显示示例会很有帮助

如何使用Java Graphics2D绘制一组QuadCurves

我在绘图中有很多QuadCurve2D方法,但是当我填充它们时,它们实际上并没有填满整个图像。 填充和曲线代码: g2.setStroke(new BasicStroke(5)); QuadCurve2D earLeft1 = new QuadCurve2D.Double(145, 155, 137.5, 49, 150, 49); g2.draw(earLeft1); QuadCurve2D earLeft2 = new QuadCurve2D.Double(150, 49, 156.25, 49, 200, 100); g2.draw(earLeft2); QuadCurve2D betweenEars = new QuadCurve2D.Double(200, 100, 237.5, 88, 262.5, 87.5); g2.draw(betweenEars); QuadCurve2D earRight1 = new QuadCurve2D.Double(262.5, 87.5, 287.5, 25, 300, 25); g2.draw(earRight1); QuadCurve2D earRight2 = new QuadCurve2D.Double(300, 25, 312.5, […]

在Java中旋转多边形

我正在编写的程序在屏幕上绘制多个星星,并为它们提供随机的方向和速度。 星星会从面板的边缘反弹并留在里面。 我需要让星星在移动时旋转。 我尝试了很多东西,我无法弄明白。 下面是我用来绘制星星并移动它们的代码。 附加信息: – 星星在一个名为“星星”的集合中 – 我写了两个类,“Star”和“MyJPanel” 设点:(星级) for (double current = 0; current < nPoints; current += 1) { i = (int)current; int[] X = new int[nPoints * 2]; int[] Y = new int[nPoints * 2]; cosX = -(Math.cos(current*((2*Math.PI)/(nPoints)))*radius[i % 2]); sinY = -(Math.sin(current*((2*Math.PI)/(nPoints)))*radius[i % 2]); X[i] = (int) cosX+x; Y[i] […]

如何使用滑块更改Java Graphics2D中的图形大小?

我正在尝试用java绘制程序,使用Graphics 2D绘制3到8边之间的多边形,并且我可以使用滑块重新resize,但我不知道如何使用滑块均匀地更改它的大小。 这是我绘制的五边形的一个例子 if (sides == 5){ g.drawLine(110+x,135-y, 10+x,205-y); g.drawLine(10+x,205-y, 48+x, 320-y); g.drawLine(48+x,320-y, 170+x,320-y); g.drawLine(170+x,320-y, 205+x,205-y); g.drawLine(205+x,205-y, 110+x,135-y); } 现在我想要均匀地改变它的大小。 (我可以在X和Y轴上移动我的多边形)。 提前致谢。

围绕其中心旋转移动的形状

我正在用Java制作2D游戏,玩家通过障碍物引导多边形。 多边形上下移动,游戏世界左右滚动。 我需要多边形围绕其中心旋转,但由于它经常被平移,所以它围绕移动旋转。 尝试将其转换回原始中心,旋转它并将其翻译回来并不起作用。 如何获得形状的中心? 以下是我在2ms计时器上的运动计算: @Override public void actionPerformed(ActionEvent e) { double theta = angleRad+90; if (up == true) { if (accelerating == false) { time2 = 0; moveX0 = moveX; moveY0 = moveY; accelerating = true; } time1++; double t = time1/500; if (accCount % 10 == 0) { DronePilot.velocity++; } moveX = […]

ImageIO保存回原始大小

我一直在寻找互联网的一些解决方案,但我仍然没有找到我的问题的答案。 我一直在工作或做一个程序,从我的PC上获取一个图像文件,然后将使用Java Graphics编辑添加一些文本/对象/等。 之后, Java ImageIO将保存新修改的图像。 到目前为止,我能够做得很好,但我对图像的大小有疑问。 原始图像和修改后的图像尺寸不同。 原版是2×3英寸的图像,而修改后的版本据说有2×3英寸太可悲地得到了8×14英寸。 所以,它比原来的更大。 什么是解决方案/代码可以为我提供2×3英寸图像的输出,仍然具有“优质”? 更新: 所以,这是我使用的代码。 public Picture(String filename) { try { File file = new File(“originalpic.jpg”); image = ImageIO.read(file); width = image.getWidth(); } catch (IOException e) { throw new RuntimeException(“Could not open file: ” + filename); } } private void write(int id) { try { ImageIO.write(image, “jpg”, […]

Java Graphics2D浮点精确drawOval替代?

所以我试图绘制一个圆弧并围绕其圆形端点放置一个圆圈,但由于四舍五入到最近的像素,我遇到了问题。 这在一些但不是所有情况下都可见。 有没有办法使用浮点和消除锯齿绘制圆圈以消除此舍入错误? 您可以运行此代码来查看问题。 为了清晰起见,我绘制了长度为0的弧(显示为大点)而不是全弧。 import java.awt.*; import javax.swing.*; public class Example extends JFrame { private int CENTER = 200; private static int WINDOW = 400; private int LEFT = 50; private int TOP = 50; private int DIM = 300; private int DIAMETER = 26; public Example () { super(); } public void paint […]

JComponent大小问题

我有一个JComponent子类,我用它来绘制我的屏幕上的形状。 在构造函数中,我试图将ballX和ballY设置为JComponent的X和Y大小值的一半,我认为我做错了。 我现在已经看了很多,但找不到补救措施。 代码如下。 请记住,这是我第一次真正的Swing / Graphics2D冒险。 public class PongCanvas extends JComponent { //Vars to hold XY values and Dimension values. private int batXDim, batYDim; private int b1X, b1Y; private int b2X, b2Y; private int ballRad, ballX, ballY; public PongCanvas() {//Instantiate vars. batXDim = 20; batYDim = 100; b1X = 0; b1Y = 0; b2X […]

如何使用透明填充缩放Graphics2D图像

我正在尝试编写一个小方法,它采用BufferedImage图像和新的宽度和高度,并通过根据图像向左/右或上/下添加透明边框来缩放保持纵横比的图像。 缩放工作正常,但对于我的生活,我不能让边框透明。 到目前为止,我在pastebin.com上发布了以下代码 ,可以很好地进行扩展。 我阅读了很多手册和其他SO问题无济于事。 我已经尝试了许多填充,复合类型,图像类型等的排列。有时我得到一个蓝色背景,有时是白色但它似乎永远不会透明。 BufferedImage newImg = new BufferedImage(newWidth, newHeight, img.getType()); Graphics2D g = newImg.createGraphics(); g.setColor(Color.WHITE); g.fillRect(0, 0, newWidth, newHeight); g.drawImage(img, x, y, x + scaledWidth, y + scaledHeight, 0, 0, currentWidth, currentHeight, Color.WHITE, null); g.dispose(); return newImg; 知道我需要做什么Graphics2D才能使Color.WHITE背景透明并在新的上面绘制旧图像? 谢谢你的帮助。 编辑: 事实certificate,我遇到的问题是我试图用JPEG图像生成透明色。 JPEG不支持透明度。 咄。

使用Java的Path2D创建钢笔工具的问题

我一直在尝试使用Path2D类和鼠标监听器为我的Java绘图程序创建一个笔工具,但我有令人困惑的结果。 该工具将工作几秒钟,但随后整个应用程序将冻结,必须关闭。 (这里没有例外;程序只是冻结)。 这是一个certificate问题的SSCCE: import java.awt.BasicStroke; import java.awt.event.MouseAdapter; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Point; import java.awt.Shape; import java.awt.event.MouseEvent; import java.awt.geom.Path2D; import javax.swing.JFrame; import javax.swing.JPanel; public class PenDemoPanel extends JPanel { private Point start; private Point stop; private Shape shape; public PenDemoPanel() { setBackground(Color.white); setPreferredSize(new Dimension(600, 600)); PathListener listener = new PathListener(); […]