Tag: 图形

动画背景java游戏

我正在编写一个类似于小行星的游戏,但我不明白如何在背景中产生小行星。 现在我在主类中产生了一颗小行星,但我想为小行星创造一个类吗? 主类 public void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2d = (Graphics2D) g; if(flag_img) { background(g2d); logo(g2d); menu(g2d); spaceship(g2d); crediti(g2d); } } 背景function(现在) private void background(Graphics2D g2d) { asteroidi_g_x+=r.nextInt(4); asteroidi_g_y+=r.nextInt(1); g2d.drawImage(asteroidi_g[0], asteroidi_g_x,asteroidi_g_y,this); } 背景function(我想要的) private void background(Graphics2D g2d) { asteroid asteroid = new asteroid[10]; } 和类小行星 public class asteroid extends JPanel implements ActionListener { […]

Thread.sleep()停止了我的油漆?

我正在制作一个程序,试图让一张卡在屏幕上移动,就好像你真的从桌面上画了一样。 这是动画的代码: public void move(int x, int y) { int curX = this.x; //the entire class extends rectangle int curY = this.y; // animate the movement to place for (int i = curX; i > x; i–) { this.x = i; } this.x = x; this.y = y; } 此矩形对象位于jframe内部的面板内。 重新粉刷小组,我有这个: public void run() { […]

在KeyPress上更改JTextField的大小

当用户在textfield中输入文本时,我必须在KeyPressed事件上扩展JTextField的大小。请给我一些想法如何实现这一点? 提前致谢

Java将2D图形作为参数传递

我有一个绘制图像的function,然后立即保存它,但问题是它似乎是两次绘制,一次用于屏幕上的视图,然后一次将其保存到磁盘 public class myFrame { public static void main(String[] args) { JFrame lv_frame = new JFrame(); // setup jframe here lv_frame.add(new image()); lv_frame.setVisible(true); } } class image extends JPanel { public void paintComponent(Graphics graphic) { super.paintComponent(graphic); draw(graphic); save(); } public void draw(Graphics graphic) { Graphics2D graphic2D = (Graphics2D) graphic; graphic2D.fillArc(0, 0, 250, 250, 0, 90); […]

使用paint(Graphics p)时在java中删除一行?

我使用以下函数绘制了一条线: public void paint(Graphics p) { super.paint(p); p.drawLine(600, 200, 580, 250); } 我想知道有没有办法可以删除这一行? 那么可以在程序的main()方法中调用这个函数吗?

记忆游戏图形java

我正在编写一个4×4内存游戏的程序。 在这16个盒子中将是一对0-7的整数。 我已将所有这些已经随机化并正确编码。 现在我想弄清楚每次鼠标点击盒子时如何将颜色与相应的整数配对。 这里大部分是代码。 我知道这个游戏的逻辑尚未开始,但我现在更专注于displayHit方法和setColor方法。 只是张贴整个代码,因为我可能搞砸了其他地方。 /*Sets the background of your memory board to black*/ public void init() { setSize(400,400); setBackground(Color.BLACK); buildBoard(4); } /*This is main in java applets You may need to add (not change) a couple things in this method */ public void paint(Graphics canvas) { if(firstRun) //for the first run we […]

计算两种颜色的组合颜色(Over运算符)

这适用于Android应用程序。 让我们说我有两种颜色的alpha int color1 = 0x12345678 // aarrggbb int color2 = 0x87654321 如何在具有color1的图层上计算图层与color2的组合颜色? 我在这里找到了一个讨论和公式,但是在编写我自己的代码之前,首先检查它是否已经在Android和/或Java中可用。 http://en.wikipedia.org/wiki/Alpha_compositing#Analytical_derivation_of_the_over_operator 编辑:请注意问题的目标不是以位图结束而是以颜色结束(例如aarrggbb int)。

使用300dpi在java中打印到硬打印机

好的,所以我刚开始研究一个打印出图形的程序。 我的几乎与Oracle版权所有者相同http://docs.oracle.com/javase/tutorial/2d/printing/examples/HelloWorldPrinter.java 所以基本上我是一个完整的菜鸟,并试图弄清楚如何将我的页面设置为8​​.5x11in和300dpi,但无济于事:(在我所有失败的尝试后,我甚至没有关于这个主题的工作代码。我知道它有一些东西与Paper.setSize()和PrinterResolution但我无法从javadocs中收集到足够的内容来理解这些。请帮助。 编辑:我相信我发现了Paper.setSize(72*8.5,72*11); 将页面大小设置为8.5×11但dpi仍为72.这是我的代码到目前为止。 public int print(Graphics g, PageFormat pf, int page) throws PrinterException { Graphics2D g2d = (Graphics2D)g; g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); Paper pg = new Paper(); pg.setSize(72*8.5,72*11); pf.setPaper(pg); if (page > 0) { /* We have only one page, and ‘page’ is zero-based */ return NO_SUCH_PAGE; } /* User (0,0) is typically outside the […]

我的GUI中的原点大约是25/26像素

我的GUI上的原点(0,0)向上移动了大约25/26像素。 所以我的GUI的左上角似乎代表0,25或0,26。 我正在使用双缓冲区来绘制内容。 基本上,每当我尝试在0,0​​的缓冲区中绘制内容时,它就会出现在屏幕外。 例如,下面是我尝试生成的棋盘图案的屏幕截图,从0,0开始。 虽然水平看起来很好,但请注意顶部的切碎棋盘。 高度为480,可以被32整除,因此棋盘图案应该完美填充。 这是我的代码(剪下不相关的部分): public class Dekari_gameGUI extends JFrame implements KeyListener { // Resources private final String imagePath = “Resources/Images/”; private final String spriteSheetPath = imagePath + “Sprite Sheets/”; private final String soundPath = “Resources/Sounds/”; private final String dataPath = “Resources/Data/”; private BufferedImage[][] sprites; private Timer playerMovementTimer = new Timer(); //Game […]

Java – 如何移动由Graphics2D绘制的矩形?

我试图移动Graphics2D绘制的矩形,但它不起作用。 当我做x + = 1; 它实际上将它移动1个像素并停止。 如果我说,x + = 200; 它在ONCE上移动200像素而不是每次更新,而是ONCE。 public void paint(Graphics g) { super.paint(g); g.setColor(Color.WHITE); g.fillRect(0, 0, this.getWidth(), this.getHeight()); g.setColor(Color.RED); g.fillRect(x, 350, 50, 50); x += 1; } int x在void paint外部调用,以确保它每次都不会增加为150。 绘制正常,只是不动,我尝试使用线程并使用while循环,所以当线程运行时,它移动,但没有运气。