问题标签 [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.
java - Drawing multiple circles with Java2D
I am trying to use Java2D to do some simple graphics programming. I've started easy, just trying to display a couple of circles in a JFrame. I was successful displaying a single circle, but when adding a second circle, only the last circle added to the JFrame is displayed. I use class Circle to define my circle and to override the paintComponent method used to display it. Any suggestions on what I might be doing wrong would be greatly appreciated. Code for my classes Circle and DancingCircles is provided below for reference.
Thanks!
Paul
java - 在Java中生成矩形边框的问题?
我正在使用java.awt.geom.Rectangle2D.Double类来生成一个矩形。我想生成一个填充有颜色(比如绿色)并有边框(轮廓)的矩形。
现在的问题是如果我打电话
然后它不会填充矩形,当我打电话时
那么 id 不会生成边框。
java - 如何在 Java 中绘制有向箭头线?
我想通过 Java 绘制一条有向箭头线。
目前我在用java.awt.Line2D.Double
class画线
但只有线条出现,没有方向箭头出现。 BasicStroke.Join_BEVEL
用于绘制有向箭头。它在两条线段相交时应用。
我正在绘制的线与矩形的边界相交,但未绘制有向箭头。只画了一条简单的线。
有什么我想念的吗?
java - Java 2D 图形:无法覆盖图像
我试图掌握 java 2d 图形
我基本上得到了一个带有背景图像的JPanel,如下所示:
在绘画组件中,我想在一个循环中覆盖从某些 xml 获得的各种 xy 点的小图像 12x12 像素。
似乎无法将图像覆盖在我的第一个图像上
我在这里有点迷路并且生锈了
任何帮助都会 b gr8
java - 在 Java 2D 中创建复合形状
我使用 Java 2D 将几条贝塞尔曲线 ( CubicCurve2D
) 修补在一起以创建一个“斑点”。我现在面临的问题是如何:
- 用给定的颜色有效地填充斑点。
- 有效地确定给定点是否位于 blob 内。
我注意到 thstCubicCurve2D
实现Shape
了它提供了许多contains
用于确定“内部”的方法,并且Graphics2D
能够Shape
通过fill(Shape)
(我相信使用Shape
的getPathIterator
方法来做到这一点)填充 a。
鉴于此,我希望我可以创建一个组合Shape
,从而我的getPathIterator(AffineTransform)
方法将简单地将底层PathIterator
s 链接在一起。但是,NoSuchElementException
一旦我的形状包含多个CubicCurve2D
. 即使我确实设法实现了这一点,我也不相信它会按预期工作,因为 aCubicCurve2D
总是在凸面填充,而我的“blob”由凹凸曲线组成。“包含”问题更加困难,因为一个点可以合法地位于 blob 内,但不能位于任何单独的曲线内。
- 我是以正确的方式解决这个问题(试图实现
Shape
?)还是有一种我不知道的惯用方式来做到这一点?我原以为合成几何形状的问题会相当普遍。 - 有人对如何解决这个问题有任何建议吗?
提前致谢。
image - Java - 使用 Graphics.drawImage() 和 2 屏幕缓冲区策略绘制许多图像会扭曲和剪切图像
我正在使用循环来调用双缓冲绘画。这与覆盖我唯一的 Panel 的重绘方法一起,旨在将重绘的完全控制权传递给我的循环,并且仅在必要时渲染(即在 GUI 中进行了一些更改)。
这是我的渲染例程:
如您所见,这是非常标准的。我从缓冲区策略(初始化为 2)中获取 grpahics 对象,将其设为全黑并将其传递给我的“窗口”对象的绘制方法。
使用图形对象完成窗口后,我将其处理并在缓冲区策略上调用 show 以显示虚拟缓冲区的内容。
重要的是要注意,窗口将图形对象传递给填充窗口的许多其他子组件,而每个子组件又使用图形对象的相同实例在屏幕上绘制一些东西:文本、形状或图像。
当系统运行并呈现大图像时,我的问题开始出现。图像似乎被切成几块并一次又一次地绘制(3-4 次),在图像应该渲染的位置内部使用不同的偏移量。请参阅我的附件图片:
这是原始图像: 替代文字 http://img109.imageshack.us/img109/8308/controller.png
这就是我得到的: 替代文字 http://img258.imageshack.us/img258/3248/probv.png
请注意,在第二张图片中,我在图片上渲染形状 - 这些形状始终位于正确的位置。
知道为什么会这样吗?如果我将图像保存到文件中,因为它在内存中,就在调用 g.drawImage(...) 之前它与原始图像相同。
java - Java 2D 着色/填充
我已经从贝塞尔曲线(下面的屏幕截图)创建了一个“斑点”,现在想以一种看起来像伪 3D 的方式对其进行着色,所有“左”边缘的阴影较暗,所有“右”边缘的阴影较浅,或许还有表面本身的纯白色“光点”。例如:我对如何实现此视频中使用的阴影感兴趣。
- 谁能推荐一个实现这一目标的好方法?我猜标准 Graphics2D.fill 和 setPaint 方法可能不够复杂。
- 另外,任何人都可以推荐一些好的资源(最好是免费/在线)来了解更多信息吗?
编辑
一些附加信息:为了实现下面的平面填充效果,我正在创建一个Area
对象,并使用将单个Ellipse2D
Shape
s 添加到它add(new Area(ellipse))
,然后最后添加中心多边形区域以避免在中间留下空白区域。
java - 检测闭合贝塞尔曲线中的自交叉
我通过将三次贝塞尔曲线拼接在一起创建了一个“斑点”形状(下面的屏幕截图)。我希望能够检测到曲线越过自身或另一条曲线的情况,并且想知道是否有推荐的方法或已知的算法来执行此操作?
我的一个想法是使用 aFlatteningPathIterator
将形状分解为直线段,然后检测给定段是否与另一个段相交,但我对是否有更好的方法感兴趣(因为这将具有二次性能)。如果我确实采用这种方法,Java中是否有库函数来检测两条线段是否重叠?
谢谢。
没有交叉
没有交叉 http://www.freeimagehosting.net/uploads/7ad585414d.png
交叉
java - OO方式的游戏设计
我正在设计一个简单的游戏,它使用 Java 2D 和牛顿物理学。目前我的主要“游戏循环”看起来像:
当一个实体被指示更新自身时,它将根据施加在它身上的当前力调整其速度和位置。但是,我需要实体表现出其他行为;例如,如果玩家射杀了“坏人”,则该实体应该被摧毁并从游戏世界中移除。
我的问题:以面向对象的方式实现这一目标的最佳方法是什么?到目前为止,我看到的所有示例都将游戏循环合并到一个名为 like 的 God 类Game
中,该类执行以下步骤:检测碰撞、检查如果坏人杀死、检查如果玩家杀死、重绘等封装所有游戏状态(剩余生命等)。换句话说,它是非常程序化的,所有的逻辑都在 Game 类中。谁能推荐一个更好的方法?
以下是我到目前为止想到的选项:
- 将 a 传递
GameContext
给每个实体,如果需要,该实体可以从中移除自己或更新游戏状态(例如,如果玩家被杀死,则“未运行”)。 - 将每个注册
GameEntity
为中心Game
类的侦听器并采用面向事件的方法;例如,碰撞将导致CollisionEvent
向碰撞中的两个参与者开枪。
java - Java swing 2D小游戏:如何建模视图?
在小型 java swing 2D 游戏中,创建棋盘视图的最佳解决方案是什么?
- 为电路板使用一个组件并一次自定义绘制它和检查器的每个正方形?
- 为电路板使用一个组件并创建另一个组件来模拟正方形,并使用它自己的油漆组件只为正方形完成这项工作。使用布局将每个 Square 实例放置在板上?
我知道这是主观的,我不想为此吵架。我只需要一些线索来弄清楚我应该走哪条路。我已经开始了一个辅助项目,并且我使用了 1),感觉有问题。