首先,这是我使用swing的第一周,如果我的问题太明显了,请见谅。此外,我需要使用标准Java库的解决方案,因为这是作业,我不允许使用奇怪的库。我使用JLabel和ImageIcon在JFrame上显示图像。现在我想将屏幕上的图像旋转到任意角度。我发现了一些关于Graphics2D的信息,但我找不到这样做的方法。由于我发现的解决方案不起作用或者我不理解它们,所以我对旋转ImageIcon或JLabel的任何解决方案感兴趣。由于我在JLabel上执行setBounds定位图像,我认为旋转JLabel将是更好的解决方案(这样我就不会被迫保存ImageIcon对象)。感谢您的关注,抱歉我的英
我目前正在尝试像在视频游戏中一样以固定速率在屏幕上绘制图像。不幸的是,由于图像移动的速度,一些帧是相同的,因为图像还没有移动一个完整的像素。有没有办法向Graphics2D提供float值而不是int值来绘制图像?最初这是我所做的:BufferedImagesrcImage=sprite.getImage();PositionimagePosition=...;//Definedelsewhereg.drawImage(srcImage,(int)imagePosition.getX(),(int)imagePosition.getY());这当然是阈值,所以图片不会在像素之间移动,而
我正在像这样扩展JFrame:publicGameFrame(){this.setBounds(30,30,500,500);this.setDefaultCloseOperation(EXIT_ON_CLOSE);initializeSquares();}privatevoidinitializeSquares(){for(inti=0;i但是,屏幕上只绘制了一个正方形,有人知道为什么吗?我的Square类也是这样的:privateintx;privateinty;privateintwidth;privateintheight;publicSquare(intx,inty,intw
是否可以在Java中检查png图像是否具有透明度?如果png图像不包含透明度,我需要将所有png图像转换为jpg。Java中有检查这个的方法吗? 最佳答案 您可以检查图像的颜色模型是否包含alphachannel:BufferedImageimg=ImageIO.read(/*fromsomewhere*/);if(img.getColorModel().hasAlpha()){//imghasalphachannel}else{//noalphachannel}请注意,此代码仅检测已使用alphachannel保存的图像。具有al
这是绘制椭圆的简单示例。publicclassSwingPainterextendsJFrame{publicSwingPainter(){super("SwingPainter");setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);getContentPane().add(newMySwingComponent());setSize(200,200);setVisible(true);}publicstaticvoidmain(String[]args){newSwingPainter();}classMySwingCom
在下面的示例中,我在绿色背景上绘制了一个自定义的JComponent,但它没有出现。为什么会这样?publicclassTest_Background{publicstaticclassJEllipseextendsJComponent{privatefinalEllipse2Dellipse;publicJEllipse(intwidth,intheight){ellipse=newEllipse2D.Double(0,0,width,height);setOpaque(true);setBackground(Color.GREEN);}@OverridepublicDimensio
我正在使用Java的Graphics2D在使用AffineTransform的组件上绘制来操纵我的绘图。Graphics2D为此提供了一种方法转换,它采用AffineTransform。有时我需要在不使用内置转换的情况下手动操作一个点。但是,当我尝试使用我给Graphics2D.transform的相同变换来变换一个点时,有时结果点是不一样的。下面的代码重现了这个问题(它是Scala代码,但我想你可以想象Java代码。):vartransformationMatrix=newAffineTransform()/**transformationMatrixismodifiedthroug
我正在使用JavaAWT在面板上画线(Line2D和Graphics2D.drawLine()),我想知道如何用刻度线,类似于:|----|----|----|----|----|我知道我想提前绘制刻度的位置。线条可以在任何位置,因此刻度线必须以相对于线条本身的角度绘制。我的基本几何学和在Java中应用它的能力让我失望了。:) 最佳答案 我建议你实现一个从左到右绘制简单水平标尺的标尺绘制方法使用Math.atan2计算出所需的角度.申请AffineTransform在调用标尺绘制方法之前进行平移和旋转。这是一个完整的测试程序。(Gr
我用谷歌搜索但没有找到正确答案。我有一个JPanel,我希望它有一个从上到下的渐变。我只想使用两种颜色。我怎样才能做到这一点? 最佳答案 给你:importjava.awt.Color;importjava.awt.GradientPaint;importjava.awt.Graphics;importjava.awt.Graphics2D;importjava.awt.RenderingHints;importjavax.swing.JFrame;importjavax.swing.JPanel;importjavax.swing
试图找出最好的方法来做到这一点(并且不要越过我不知道的任何细节)。我正在努力用圆圈和线条直观地显示一个图形(各种节点,用边连接它们)来表示这样的图形。每个节点都将在运行时添加,我不能对此进行硬编码。据我了解,所有绘画都需要在paint(Graphicsg)方法中完成-这不是很有帮助,因为我无法更改参数而且似乎只在初始创建期间调用?现在我正在考虑让它调用各种其他方法,传递Graphics对象,并根据其他变量-我将决定这是否是我想要调用的方法(因为paint()方法是唯一的方法我可以打电话)。我是不是完全错了?以前从来没有为此烦恼过。为了让您更好地了解我最终想要得到的结果:我希望能够传递要