问题标签 [java-2d]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
7118 浏览

java - JPanel 中的 JLabel 动画

在摸索之后,我发现最好通过扩展 JLabel 来实现自定义图像组件。到目前为止效果很好,因为我可以添加多个“图像”(jlabels 而不会破坏布局。我只是有一个问题希望有人可以为我回答。

  • 我注意到,为了在屏幕上为 JLabels 设置动画,我需要对setlayout(null);组件setbounds进行动画处理,然后最终进行动画处理setlocation(x,y);。这是动画组件的最佳实践还是糟糕的方式?我计划最终制作一个动画课程,但我不想这样做并且最终不得不放弃它。

我已包含相关代码以进行快速检查。

谢谢!

0 投票
1 回答
1302 浏览

java - 需要帮助了解两个与 java gui 相关的系统属性的影响

我遇到了一个问题,涉及在 java 中混合轻量级和重量级组件。

奇怪的挥杆重量级和轻量级混合问题

向我建议的一个解决方案(在 stackoverflow 之外)是将系统属性设置sun.awt.noerasebackgroundsun.java2d.noddrawtrue。

我想知道在我的基于 swing 的 java 应用程序(在 WinXP 中运行并具有许多 Swing 组件)上可能会影响此更改的哪些方面。

可能会出现什么样的问题?会不会影响性能?其他东西可能会停止工作吗?

谢谢,约阿夫

0 投票
1 回答
1359 浏览

java - Java:使用 AffineTransform 缩放图像时出现线条

我在图像缩放方面遇到问题。当我使用以下代码缩放图像时,它会在图像的底部或右侧以一条线结束。

原始图像

在此处输入图像描述

缩放后的图像

在此处输入图像描述

有谁知道为什么会出现这条线?

谢谢!

编辑:

添加了完整的方法代码:

方法调用中的 maxWidth 和 maxHeight 参数设置为 SPINNER_MAX_* 常量。

谢谢!

0 投票
3 回答
2635 浏览

java - 通过扩展 Rectangle 类来实现碰撞检测以使用它的 contains 和 intersects 方法

我想知道实现矩形的简单二维碰撞检测是否是一个好主意,如下所示:

  1. 制作我自己的扩展 Rectangle 类的碰撞检测类。
  2. 然后在实例化该对象时执行诸如Collision col = new Rectangle();<- 我应该这样做还是应该避免这样做?我知道我“可以”,但我应该这样做吗?
  3. contains()由于andintersects()方法,我想扩展 Rectangle 类;我应该这样做还是应该为 Java 中的 2D 碰撞检测做其他事情?
0 投票
1 回答
1691 浏览

java - 如何在 Java 中绘制贝塞尔路径的控制点?

我创建了一条贝塞尔曲线的路径,它可以很好地绘制路径。但我不知道如何将控制点与路径一起绘制。这是可能的还是我必须在另一个数据结构中跟踪它们?

更新:我为什么要绘制控制点的原因是我会让用户使用控制点上的手柄来编辑曲线。

我正在创建路径:

并绘制它:

我已经按照垃圾上帝的建议使用 PathIterator 进行了测试,但是如果我希望用户能够编辑控制点,则很难以这种方式管理曲线。

0 投票
4 回答
2210 浏览

java - 如何在 Java 中计算 Path2D 的长度?

我有一些由 Path2D 表示的路径。Path 由多个相互连接的 CubicCurve2D 或 Line2D 段组成。我想计算或获取从路径开始到结束的长度。我该如何计算或得到它?是否可以?我检查了 API 文档,但找不到任何有用的方法。

0 投票
1 回答
2797 浏览

java - 如何使用另一个象限的坐标在 JPanel 上绘制?

我想通过覆盖在 JPanel 上绘制一些形状paintComponent。我希望能够平移和缩放。平移和缩放很容易使用AffineTransform和对象setTransform上的方法Graphics2D。这样做之后,我可以用“世界坐标”定义形状来轻松绘制形状,g2.draw(myShape)因此在平移时它可以正常工作,我必须在绘制之前将它们转换为画布/JPanel 坐标。

现在我想改变坐标的象限。从JPanel和电脑经常使用的第四象限到用户最熟悉的第一象限。X 是相同的,但 Y 轴应该向上而不是向下增加。很容易通过以下方式重新定义 origonew Point(origo.x, -origo.y);

但是我怎样才能在这个象限中画出形状呢?我想保留形状的坐标(在世界坐标中定义),而不是将它们放在画布坐标中。所以我需要以某种方式转换它们,或者转换Graphics2D对象,我想有效地做到这一点。我也可以这样做AffineTransform吗?

我的绘图代码:

0 投票
6 回答
1946 浏览

java - 在 Java2D 中移动多个 BufferedImage?

如何在 Java2D 中鼠标拖动不同的 BufferedImages?

例如,如果我有十个或更多图像,我如何移动鼠标所在的图像?

现在我正在导入一个 BufferedImage

我正在用 Graphics2D 画这个

每次我在图像上移动时,我都会重新绘制()整个屏幕。我的 mousemove 类如下

使用这种方法,我可以“拖动”一张图片,但是当我要单独拖动更多时该怎么办?

0 投票
2 回答
3960 浏览

java - 在 Java 中渲染图像中的文本

是否有任何不错的库可以在 Java 图像中呈现文本?

Java 有一个 2d 文本库,http://java.sun.com/docs/books/tutorial/2d/text/index.html但不确定是否有更好的库可以使用。

0 投票
2 回答
621 浏览

java - 在 Java 中操作 PNG

有没有一种简单的方法可以在 Java 中操作 PNG?我知道我可以读入 BufferedImage 并将其写回,但我需要在图像边缘周围添加清晰的像素。是否有捷径可寻?