标签: java-2d

用Java创建和绘制巨大的(缓冲的)图像

我正在开发一个应用程序,它使用Java 2D绘制矩阵 - 它可以变得非常大,例如30000 x 30000像素.此时我用BufferedImage进行了一些实验,但是创建如此庞大的BufferedImage会导致内存不足异常,即使在扩大堆时也是如此.现在我正在考虑将图像分成几个图像/区域,当我在某个区域完成时,将其写入磁盘并创建一个新区域/ BufferedImage并继续绘制.我对其他人如何处理这个问题感兴趣.我已经离开Java一段时间了,所以欢迎任何具体的例子.

java image-processing java-2d

6
推荐指数
1
解决办法
1843
查看次数

如何在Java2D中进行双缓冲?

我在屏幕上使用Java2D绘制了一堆原语,我得到了很多撕裂/闪烁.

如何启用/使用双缓冲,以便将其从屏幕上拉出然后显示整个事物?

java doublebuffered java-2d

5
推荐指数
1
解决办法
4373
查看次数

用于 GUI 的 Java 2D 场景图形库

我正在寻找用于构建 GUI 应用程序的 2D 场景图库。它应该很快,使用 Java2D 并与 Swing 兼容(可嵌入 Swing 应用程序并显示 Swing 组件)。对动画的支持是一个加分项。

  • 你对一些图书馆有什么经验吗?
  • 有没有我错过的图书馆?
  • 我必须补充一点,我并没有完全被 Scala 库冒犯。

项目场景图

  • 似乎相当快
  • 仅 GPL(无 LGPL)
  • 支持动画
  • 被遗弃 2年前
  • 作为 JavaFX 的前一部分,它是 Sun 的产品

G

  • 不知道快不快
  • LGPL
  • 没有动画
  • 最新版本 12 月 9 日

短笛2D

  • 对于“可缩放的用户界面”
  • 看起来像一个学术项目
  • 活跃度高的谷歌代码项目
  • BSD 许可证
  • 不知道它是否很快
  • 不知道它是否有动画

纸芯

  • 是一个游戏库
  • 针对小程序部署(使用它作为应用程序是hacky)
  • 非常快
  • 支持动画
  • 2-3年没有发展
  • 可能根本没有 Swing 支持

jTem

  • 更大项目的一部分(乍一看)
  • freeBSD 许可证
  • 没有动画支持
  • 看起来很小

java user-interface scala java-2d scenegraph

5
推荐指数
1
解决办法
3473
查看次数

如何创建赛道游戏?

我打算在android中制作赛车游戏.我已经在不同的移动技术中创建了许多应用程序.但我几乎是游戏应用的初学者.所以我的问题是如何在Android中制作赛道?我应该如何证明汽车正在赛道上移动.我有汽车和赛道的图像.但我不知道我应该如何展示赛道的一部分以及应该如何显示赛车在赛道上?

android drawing java-2d

5
推荐指数
1
解决办法
8093
查看次数

要在Java2D中绘制哪个子类组件(用于2D游戏)

我已经创建了自己的画布,已经从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的事情.

java frame-rate timer java-2d

5
推荐指数
1
解决办法
324
查看次数

如何在Graphics2D上下文中的Path2D对象上设置Rectangle的动画

我刚开始学习有关Graphics2D类的基础知识,到目前为止,我能够绘制不同的对象和实现,ActionListener以实际在屏幕上移动它们onKeyPress.到目前为止一切都那么好,虽然我想做一些更复杂的事情.我想给出一个我的对象的路径,并仅在该特定路径上制作动画.

有点像,我会在天空画一条线,一架飞机应该坚持画线并保持自己在那条特定线上飞行.现在有可能吗?

我不需要任何代码,但很少有不同的方法或想法让我开始研究这个问题.我想法的可视化阐述如下.

起点 :

在此输入图像描述

终点:

在此输入图像描述

现在如上图所示,我的黄色框(在未来的平面中)应该在动画时坚持给定的路径(路径灰线)

我到目前为止的研究,

我搜索过我的流行语,比如java中的路径,发现Path2DGeneralPath类,有没有人知道我是否可以用它来解决这个问题.

谢谢

java java-2d graphics2d

5
推荐指数
1
解决办法
1285
查看次数

Java2D/Swing:将具有文本抗锯齿功能的组件渲染到BufferedImage

我想将一个Java Swing组件,例如一个JButton,我也放在JFrame上,渲染到BufferedImage.这通常有效,但有一个主要缺点:文本抗锯齿,尤其是"LCD"抗锯齿模式,在渲染到BufferedImage时不起作用.

我已经将一些示例代码放在一起来演示问题,但首先是我的系统信息:

  • 操作系统:Windows 7 64位
  • JVM:1.6.0_26-b03(32位)

下面的示例代码将创建一个简单的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)

java bufferedimage java-2d antialiasing graphics2d

5
推荐指数
1
解决办法
2507
查看次数

如何在JLabel上绘图?

我想使用2D Java API在已经有图像的JLabel上绘制,然后保存生成的编辑图片.

我找不到关于这个特定主题的任何教程,是否有人有任何代码或参考资料显示如何做到这一点?

java graphics swing jlabel java-2d

5
推荐指数
2
解决办法
1万
查看次数

绘制弧并渐变它

我想知道是否可以使用渐变在图形面板上绘制一个Arc,以及我将如何进行.

我的最终目标是将圆弧旋转一整圈,使其类似于旋转加载圆.但它不是装载栏.它将是自定义JButton的背景.

任何可能产生类似效果的替代品的建议都将受到赞赏.

这与oi想要绘制的内容类似.请记住它会"旋转"

在此输入图像描述

java graphics gradient awt java-2d

5
推荐指数
1
解决办法
2607
查看次数

在扩展Canvas时使用drawLine()绘制粗线

鉴于以下内容:

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 awt java-2d java-canvas

5
推荐指数
1
解决办法
2万
查看次数