我正在开发一个应用程序,它使用Java 2D绘制矩阵 - 它可以变得非常大,例如30000 x 30000像素.此时我用BufferedImage进行了一些实验,但是创建如此庞大的BufferedImage会导致内存不足异常,即使在扩大堆时也是如此.现在我正在考虑将图像分成几个图像/区域,当我在某个区域完成时,将其写入磁盘并创建一个新区域/ BufferedImage并继续绘制.我对其他人如何处理这个问题感兴趣.我已经离开Java一段时间了,所以欢迎任何具体的例子.
我在屏幕上使用Java2D绘制了一堆原语,我得到了很多撕裂/闪烁.
如何启用/使用双缓冲,以便将其从屏幕上拉出然后显示整个事物?
我正在寻找用于构建 GUI 应用程序的 2D 场景图库。它应该很快,使用 Java2D 并与 Swing 兼容(可嵌入 Swing 应用程序并显示 Swing 组件)。对动画的支持是一个加分项。
我打算在android中制作赛车游戏.我已经在不同的移动技术中创建了许多应用程序.但我几乎是游戏应用的初学者.所以我的问题是如何在Android中制作赛道?我应该如何证明汽车正在赛道上移动.我有汽车和赛道的图像.但我不知道我应该如何展示赛道的一部分以及应该如何显示赛车在赛道上?
我已经创建了自己的画布,已经从JPanel扩展,但是我注意到内容等等,突然间我的FPS受到了打击.我遵循Filthy Rich Clients的swing规则,使用paintComponent,创建剪辑区域,仅重绘已更改的内容,等等.我将FPS设置为恒定的50 FPS,我注意到有时候我的FPS会跳到31/32 FPS然后再回到50 F等等.在运行我的程序时,它只使用大约25MB的RAM和0的CPU,即使在渲染时也是如此.我也有OpenGL设置.
注意:我没有图像,这是严格使用图形中的形状.
在JPanel上绘制所有内容是否会对性能产生重大影响?我应该扩展一个不同的组件(我一直看到Canvas组件)?在JPanel中构建像俄罗斯方块(或任何其他复古游戏)这样的游戏有多"聪明"?
这是一个计时器问题的可能性,因为我刚添加了100个额外的绘画调用,而FPS仍然执行50 32/31的事情.
我刚开始学习有关Graphics2D类的基础知识,到目前为止,我能够绘制不同的对象和实现,ActionListener以实际在屏幕上移动它们onKeyPress.到目前为止一切都那么好,虽然我想做一些更复杂的事情.我想给出一个我的对象的路径,并仅在该特定路径上制作动画.
有点像,我会在天空画一条线,一架飞机应该坚持画线并保持自己在那条特定线上飞行.现在有可能吗?
我不需要任何代码,但很少有不同的方法或想法让我开始研究这个问题.我想法的可视化阐述如下.
起点 :

终点:

现在如上图所示,我的黄色框(在未来的平面中)应该在动画时坚持给定的路径(路径灰线)
我到目前为止的研究,
我搜索过我的流行语,比如java中的路径,发现Path2D和GeneralPath类,有没有人知道我是否可以用它来解决这个问题.
谢谢
我想将一个Java Swing组件,例如一个JButton,我也放在JFrame上,渲染到BufferedImage.这通常有效,但有一个主要缺点:文本抗锯齿,尤其是"LCD"抗锯齿模式,在渲染到BufferedImage时不起作用.
我已经将一些示例代码放在一起来演示问题,但首先是我的系统信息:
下面的示例代码将创建一个简单的JFrame,在其上放置一个JButton,然后将JButton呈现为文件"test.png":
public class TextAntiAliasingTest
{
public TextAntiAliasingTest() throws IOException
{
// Create Test-Button which will be rendered to an image
JButton button = new JButton( "The Test-Button" );
button.setSize( 200, 70 );
button.setLocation( 200, 150 );
// Create JFrame
final JFrame frame = new JFrame();
frame.setSize( 800, 600 );
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.setLayout( null );
frame.setLocationRelativeTo( null );
frame.add( button );
// Show JFrame
SwingUtilities.invokeLater( new Runnable() {
@Override public void …Run Code Online (Sandbox Code Playgroud) 我想使用2D Java API在已经有图像的JLabel上绘制,然后保存生成的编辑图片.
我找不到关于这个特定主题的任何教程,是否有人有任何代码或参考资料显示如何做到这一点?
我想知道是否可以使用渐变在图形面板上绘制一个Arc,以及我将如何进行.
我的最终目标是将圆弧旋转一整圈,使其类似于旋转加载圆.但它不是装载栏.它将是自定义JButton的背景.
任何可能产生类似效果的替代品的建议都将受到赞赏.
这与oi想要绘制的内容类似.请记住它会"旋转"

鉴于以下内容:
public class NavigationCanvas extends Canvas implements MouseListener,MouseMotionListener,KeyListener {
public void paint(Graphics g)
{
// some code
// more
// ...
g.setColor(Color.black);
// drawing each Line
for (int i=0; i<length; i++)
{
Line2D currLine = m_lines.get(i);
g.drawLine((int)currLine.getX1(),(int)currLine.getY1(),
(int)currLine.getX2(),(int)currLine.getY2());
g.drawLine((int)currLine.getX1()+1,(int)currLine.getY1()+1
,(int)currLine.getX2()+1,(int)currLine.getY2()+1);
g.drawLine((int)currLine.getX1()+2,(int)currLine.getY1()+2
,(int)currLine.getX2()+2,(int)currLine.getY2()+2);
}
}
...
}
Run Code Online (Sandbox Code Playgroud)
当我绘制线条时,currLine我得到这个:

正如你所看到的,我打了3个电话drawline(),让它更大胆,但它仍然不如我想要的那样.
我怎样画一条粗线?
java-2d ×10
java ×9
awt ×2
graphics ×2
graphics2d ×2
android ×1
antialiasing ×1
drawing ×1
frame-rate ×1
gradient ×1
java-canvas ×1
jlabel ×1
scala ×1
scenegraph ×1
swing ×1
timer ×1