问题标签 [java-canvas]
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 - 将数组绘制到画布
我正在尝试将对象从数组中绘制到画布上,但问题是,我不知道该怎么做?这必须包括形状的位置和大小,并且会有不止一种形状。到目前为止我得到的代码(虽然效率低/不好)
有任何想法吗?谢谢。
java - 如何使用 Swing 在 Java 中构建我的图形结构?
我想知道您是否可以帮助我了解我的程序结构。我正在用 Java 制作游戏,我有 2 个类。1 类是一个图形类,它用一个paint 方法扩展了 JFrame:
图形类 paint() 并调用使用 JFrame 作为参数的各种对象。类内部是一个实现 MouseListener 和 Mouse Motion Listener 的子类,它与paint方法交互。
画布类我计划将第一个类嵌入到一个更大的画布类中,该类将具有按钮、面板等,因此基本上将该类用作更大程序中的一个较小(子程序)。这可能吗/我这样做是否正确。每当我尝试在画布类中调用图形类时,图形都不会出现。
任何帮助/指导将不胜感激。我只是想主要知道我是否正确地考虑了图形编程。
java - 在 Jpanel 上绘制可移动的画布
我想画一个可以在 Jpanel 上移动的画布。那就是当用户点击画布并拖动它时,它必须移动到一个新的位置。我已经实现了 MouseMotionListener,但我不知道要在里面包含什么来使画布按照要求移动。这是 DisplayCanvas 类:
这就是我测试它的方式。
注意:请不要建议我使用 JPanel 来使用画布。
java - 如何截断两点之间的线?
我想在画布上画一条线。因此,我使用用户两次单击来定义起点S
和终点E
。
我还想在直线的两侧减去一个静态偏移量,例如static int offset = 10;
我的问题是:我怎么知道我必须添加或减去偏移量的方向(北、东、南、西)?
如果这条线从上到下,我必须(0, +10)
在起点 S 和(0, -10)
终点应用。当直线穿过坐标空间对角线时会变得更复杂。
可能这可能是一个“简单”的数学问题,但我缺少正确的关键字来找到任何解决方案。
java - 线交叉矩形 - 如何找到交叉点?
我在画布上画了一个矩形,从矩形中心到坐标空间中的某个随机点画了一条线。
现在,我想将线截断矩形内的长度,以便线从矩形边缘开始。
我怎么能这样做?
例子
- 矩形可以由 2 个点定义:
Pstart(1, 3)
,Pend(3, 1)
- 中心点可以计算为:
P(2, 2)
- 现在从
P(2, 2)
到画线Q(10, 2)
。
因为我知道矩形的宽度是 2,所以我可以告诉这条线从 . 开始P(4, 2)
而不是P(2, 2)
.
当点不平行于 XY 轴之一时,这会变得更加复杂。此外,矩形内的长度对于对角线将是不同的。
如何计算线点相对于矩形中心和线终点的起始偏移量?
可能我必须找到线穿过矩形的点,然后让线从交叉点开始。但是我怎么能得到这一点呢?
java - 倒坐标系中线和矩形的线裁剪算法?
我正在尝试使用以下算法:http ://www.skytopia.com/project/articles/compsci/clipping.html
但是对于我的特殊情况,我没有一个line
跨越rectangle
2 次的 a,但它从center
矩形的 开始,并且只穿过它一次。
使用上面的算法,我想获得画布上绘图的单个交点。
问题:画布没有正常的坐标空间,其中 Y 增长到顶部,但 Y 增长到底部。
为了“镜像”y轴并使其在画布坐标系中工作,我需要改变什么?
java - 画布可以处理双数作为点吗?
是否canvas
能够处理double
诸如此类的数字0.5, 10.4
?或者这是否会在内部四舍五入为整数(如果是,如何?)。
我问是因为我认为画布上的元素表示为像素。
而且由于像素始终是大小1x1
(如果我错了,请纠正我),如果我double
向画布函数而不是提供值,是否有更准确的绘图的优势integer
?
java - 如何检查Point是否在对角线上?
我有一个canvas
. lines
在click
我想检查点击是否在我的线上以突出显示它。
我也有一些rectangles
通过使用start
和end point
广场很容易的地方。但是对于我来说,diagonal line
我不能使用与一条线不填充矩形相同的技术。
但是我怎么能做到这一点呢?此外,我还想有一些“偏移”,这样如果点击足够接近线,它也会被标记,否则细线可能很难点击。
可能我错过了正确的关键字,因为我肯定不是第一个想要这样做的人。希望你能帮忙。
java - 如何检查点是否在对角线周围的矩形内?
首先:我知道我可以计算从 apoint
到 a的距离line
来检查该点是否在线。这就是我为检测offset
一行上的点击(带有 )所做的。
但在此之前,我想对diagonal line
. 带有起点和终点的线本身定义了一个矩形区域:
我可以使用边界检查来确定是否在Point(px, py)
里面rectangle
:
但这仅适用于线条从左上角到右下角的情况。如果它走向不同的方向,我必须修改算法。无论线方向如何,我如何使用上面的公式?
我怎样才能得到公式来相应地尊重方向?
java - 删除时如何设计多对多关系?
我正在创建一个canvas
带有 2 个对象的绘图:Rectangles
,并Lines
连接矩形。每条 Line 都应该知道Rectangle
它连接的 2 s。每个Rectangle
都可以有多条线将其连接到其他Rectangle
s。
我觉得这可能不是一个好的设计,因为当我删除 a 时Line
,我还必须Line
从它连接的连接列表中删除Rectangle
。
当我删除 aRectangle
时,我还必须删除Line
连接到矩形的 s,因为没有它们就不应该存在。因此,我必须遍历所有connections
可删除的Rectangle
,并为每个connection
获取from
/ to
rectangle
,然后再次获取connection
列表并删除Line
引用。
我的问题不是编写该代码(我已经让它工作了),但在我看来,我正在做很多来回参考。
这可以做得更好吗?不知何故:如果一个矩形被删除,那么所有来自行的深层连接都会被自动删除/失效?类似于 Hibernate 的多对多级联?我不能只使用 Hibernate,因为这应该是一个客户端应用程序,没有数据库。