问题标签 [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.

0 投票
1 回答
1179 浏览

java - JavaFX 和 Canvas 的快速更新

我正在尝试在 JavaFX 下创建一个自定义 Canvas 小部件,它从许多不相关的工作线程中收集信息。“更新”事件可能以各种速率出现,有时太快,有时根本没有,这意味着需要正确解决“更新太快”和“空闲时间”要求。更新次数太多,因此每次执行更新时发出Runnable并不是一个好的解决方案。

只是为了测试,我的蛮力方法是创建一个AnimationTimer来更新 Canvas 对象的视觉效果。该解决方案运行良好,但当然有时 Canvas 不需要更新,从而使整个过程效率低下。

我的问题最接近的答案似乎是这篇带有 GUIUpdater 帮助器类的帖子,但 Canvas 似乎没有直接更新属性。我正在尝试找到一种方法来使用绑定参数“插入”所需的更新功能,但很幸运。我什至试图了解 Canvas 是否有“更新”事件,但我没有找到。据我所知,我发现的所有其他答案都不符合要求。

提前致谢

编辑

这是我用来确保只有当数据发生变化时才会绘制画布的代码:

这是通过以下方式触发的:

0 投票
1 回答
617 浏览

java - 使用 JavaFX 使用 Canvas 绘制一个移动的球

我正在编写一个简单的游戏,其中球在撞到墙上时应该反弹。我将 JavaFX 用于 GUI、Canvas 和 GraphicsContext 用于绘图。

我绘制球的代码:

请注意,这gc是我使用的 GraphicsContext。一切都按预期进行,但只有一件事困扰着我:

带有蓝色轨迹的球

球留下了它一直在走的路,这让我非常困扰。我尝试了一次移动的代码(再次将其绘制为蓝色和黑色),它没有留下任何痕迹,但是当我将它放在线程上并让它运行时,就会发生这种情况。

0 投票
2 回答
679 浏览

java - Java jFrame画布绘制点而不是线

我一直想为龙曲线设计一个生成器。

(如果您想了解这方面的信息,请查看信息,但这对于该问题并不重要)

龙曲线是一个重复的数学结构。我已经为画布应该绘制的内容编写了一个生成器,它通过返回一个由 'r' 或 'l' 组成的 char 数组来工作,说明该行接下来是向左还是向右转。在这里的代码中,它是方法input()。这部分工作完美。

问题是,每当我想在画布上绘制它(使用drawLine)时,它只会将前两行绘制为实际线条,其余的只是点。

点在正确的位置,如果你把东西做得很大,你就再也看不出区别了,但无论如何,那里应该有线条。

图片: 图片

这是我使用的代码:

0 投票
1 回答
1097 浏览

android - 画布旋转后图像模糊,仅在 Android 6 中

我有一个带有以下代码的自定义视图:

大多数情况下,这会产生非常清晰的图像。但是,有时结果看起来像这样: 不是很清楚 这似乎只发生在我的两个测试设备之一上。该设备是摩托罗拉 moto G,升级了 Android 6。另一台似乎总是能产生非常清晰的图像的测试设备是 Oneplus X,Android 5。它也不一致,有时会发生,然后下一刻不会再次发生。从我能够测试的情况来看,它甚至不取决于应用的旋转量。不过,我从未见过它发生在直角(0、90、180 度)上,而且在接近 45 或 135 度的角度似乎更糟。

有问题的图像是一个导入的 SVG,直接放在 res/drawable 文件夹中。因此它不可能是分辨率。(此外,gauge_outer 被放置在完全相同的文件夹中,并以完全相同的方式制作,尽管这个不会变得模糊。)

关于如何解决这个问题的任何想法?


编辑:

好吧,别介意我说的完全不一致。它似乎是完全一致的,并且当旋转越来越接近 90 度时最差。此外,只要旋转正好 90 度,指示器就会完全消失。


编辑:

看:两个模拟器,一个运行 Android 5,一个运行 Android 6:

安卓 5安卓 6

完整的源代码如下:

带有drawable/gauge_inner.xml

和drawable/gauge_outer.xml

0 投票
3 回答
1244 浏览

java - 如何将上下文菜单添加到画布元素?

问题:不可能通过 addContextMenu(menu) 简单地将 ContextMenu '添加'到 Canvas 或 Pane 元素,它仅适用于 javafx.scene.control 元素(并且 Canvas 或 Panel 都不扩展此类)。

问题:是否有任何“干净”的方式将 ContextMenu 项目“注册”到 Canvas 元素?我期望此菜单的标准行为(在 RMB 单击 Canvas 元素后显示,在单击 LMB 时自动隐藏等)。

0 投票
1 回答
1363 浏览

java - 在画布上添加 Jlabel

有什么方法可以在画布上添加一个 jlabel 吗?在我的代码中,我的框架的构造函数在添加画布之前先添加标签,但是当我运行它时它不显示标签。

我正在画我的画布的背景。

0 投票
1 回答
380 浏览

java - 如何在 Java 中使用 Canvas 根据屏幕宽度和高度绘制字符串或矩形

我想知道如何绘制字符串或矩形(JFrame 完全处于全屏状态)

这是我的 Main.java 类中的内容:

后来在不同的课程中,我有:

}

此代码有效并运行但文本未完全居中我希望它居中在顶部而不是在中间。谢谢你!

0 投票
2 回答
46 浏览

java - 通过多线程的并发方法

我正在尝试用 Java 制作游戏,这是我第一次处理多线程(嗯,除了通过 Clip 类同时播放音乐之外。)我有一个扩展 JPanel 的 Canvas 类,但在 Canvas 类中我也有一个KeyListener 接受输入,如下所示:

我的目标是拥有它,以便可以在画布上同时移动两个玩家(它们是矩形)。目前,一次只能移动一个,但不能同时移动两个。这是我第一次处理多线程,所以如果我犯了一个新手错误,我提前道歉。

0 投票
1 回答
92 浏览

java - 在进程之间共享 Java Canvas

如何java.awt.Canvas在 Java 进程中创建对象并将其传递给另一个(子)进程,并让另一个进程在其上放置轻量级(swing)组件。子进程应该处理它放在画布上的组件的事件。当然,事件调度线程应该按预期运行。

0 投票
1 回答
196 浏览

java - 使用 KeyPressed 在画布上移动图像

我的 KeyPressed 正在工作,但我的 moveLeft 方法中的 avatarDX 没有变化。我在 moveLeft 上做错了吗?看起来应该很简单,但我不确定我做错了什么。我没有任何错误消息。

我正在画布上绘制图像

对于 KeyPressed 我有

而 moveLeft 是

我将不胜感激任何帮助,我对此很陌生。