问题标签 [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 投票
4 回答
4208 浏览

c# - 为什么在 WPF 自定义 2D 绘图中使用带有破折号图案的笔会导致巨大的(!)性能下降?

希望任何人都可以阐明这一点,以便我可以使用带有破折号图案的笔?

我正在使用 WPF 中的X编写一个可滚动的图表(实现的Panel内部) 。我有几千个s 可以通过在托管它们的 s 上使用来滚动。我通过在其顶部放置一个网格并使用//(注意:这些线始终是静态的,它们从不移动)从一个边缘到另一个边缘绘制简单的水平线来实现一个网格。ScrollViewerIScrollInfoDrawingVisualDataContext.DrawDrawingVisualTranslateTransformPanelPanelDataContext.DrawLine(pen, new Point(0, y), new Point(widthOfPanel, y));

滚动性能绝对是疯狂的(即 DrawingVisual 是即时绘制的,滚动是即时的)。但是如果我使用一个Pen使用破折号模式(例如见下文)来绘制网格线,那么滚动非常不稳定,并且性能似乎已经降低了 100 倍(估计值)。谁能解释为什么会发生这种情况以及我如何解决这个问题?

带有破折号图案的笔示例:

0 投票
5 回答
6815 浏览

java - Java 2D 和调整大小

我有一些想要重用的旧 Java 2D 代码,但我想知道,这是获得最高质量图像的最佳方式吗?

0 投票
9 回答
1204 浏览

wpf - WPF:沿路径查找元素

我尚未将此问题标记为已回答。
由于赏金时间限制,当前接受的答案被自动接受


参考我目前正在构建的这个编程游戏。

正如您从上面的链接中看到的那样,我目前正在构建一个用户可编程机器人在竞技场中自主战斗的游戏。


现在,我需要一种方法来检测机器人是否在特定角度检测到另一个机器人(取决于炮塔可能面向的位置):

替代文字 http://img21.imageshack.us/img21/7839/robotdetectionrg5.jpg

从上图中可以看出,我已经绘制了一种坦克的视角,现在我需要在游戏中模拟它,以检查其中的每个点以查看是否有另一个机器人在视野中。

机器人只是在战斗竞技场(另一幅画布)上不断翻译的画布。

我知道炮塔的朝向(它当前面对的方向),因此,我需要找到它的路径中是否有任何机器人(并且路径应该以“视点”方式定义,如上面的图片以红色“三角形”的形式出现。我希望这张图片能更清楚地表达我想要表达的意思。

我希望有人可以指导我解决这个问题所涉及的数学。


[更新]

我已经尝试了您告诉我的计算,但它无法正常工作,因为从图像中可以看出, bot1 不应该能够看到 Bot2 。这是一个例子:

替代文字 http://img12.imageshack.us/img12/7416/examplebattle2.png

在上述场景中,Bot 1 正在检查他是否可以看到 Bot 2。以下是详细信息(根据Waylon Flinn 的回答):

根据上面的计算,Bot1 可以看到 Bot2,但是从图片中可以看出,这是不可能的,因为它们面向不同的方向。

我在上述计算中做错了什么?

0 投票
4 回答
9247 浏览

java - 一个好的Java 2d 引擎?

有谁知道带有精灵、动画和碰撞处理的 Java 2D 引擎?

0 投票
2 回答
2796 浏览

graphics - 用低帧率创建漂亮的动画

好的,这听起来像是一个愚蠢的问题,但我想知道当你知道你将有低帧率时,是否有任何关于如何尽可能平滑和快速地为对象设置动画的建议。

我的动画所做的是,我在 x 和 y 上移动了大约 10 个二维矩形(每个都包含一个纹理)大约 500 像素,并且我还将它们从大约 1000*1000 像素缩小到大约 30%。我希望动画在大约 200 毫秒内完成。我估计帧率可能是 20-30fps。

我尝试了不同的时间和运动速度,但它们看起来都像废话。如果你的速度很高,你几乎看不到动画,如果你的速度很慢,它看起来很流畅,但需要很多时间。

有没有研究过如何制作一个看起来仍然运行流畅的快速动画。我在想你可能会在开始时加速很慢,然后在结束时跳跃,或者反过来呢?我自己的实验看起来既跳跃又缓慢:P

我们人类认为看起来不错的像素/帧必须有一些限制。我在哪里可以找到这样的指南?


为什么我想知道这个?

我制作了一个窗口切换应用程序,它可以制作一些很酷的动画,但问题是当我不运行任何图形密集型应用程序时,我的图形卡会进入某种低功耗模式。这会导致我的应用程序(一次运行时间不超过 3 秒)性能很差,因为 gfx 卡从来没有时间加速。

(如果你有笔记本电脑和vista,你可以自己试试这个:按win+tab,你会看到动画有点断断续续,然后开始播放电影,再次按win+tab,这次动画更流畅)。

0 投票
2 回答
7652 浏览

java - 如何在 Java 中创建平铺地图?

所以我有一个平铺图像 tile.png 并且我正在尝试在整个窗口中创建一个平铺地图。我正在将其构建为小程序。这就是我的绘画方法的样子,但它并不有效。当我运行小程序时,大约需要 2 秒,整个屏幕都是从左到右绘制图像,而不是一次渲染所有内容。此外,它看起来像一个大 tile.png 而不是 40 个小 tile.png 实例

顺便说一句,tile.png 文件是 10 x 10 像素,这是实际的 img:

tile.png http://img12.imageshack.us/img12/1368/tile.png

编辑:使用下面的代码并通过改进平铺图像我修复了这个问题。这是我的新瓷砖 img,以防它帮助某人:

瓷砖-new.png

0 投票
2 回答
55577 浏览

java - 如何在 Java 中提取此图像的一部分?

我有这个精灵表:

吃豆子精灵

如何读取此图像文件以提取其中的一部分用作精灵

0 投票
2 回答
3329 浏览

java - 如何使用双缓冲在 Java 中显示 Pacman 的嘴巴打开/关闭动画?

我正在尝试在我正在制作的一次性 pacman 游戏中展示 pacman 角色著名的张嘴/闭合动画,以自学游戏编程。

我正在做的是绘制张开的嘴巴图像,然后在完全相同的(x/y)位置重新绘制闭合的嘴巴图像。但这不起作用,我只是一直看到闭口动画。

如果我把它放在一个循环中,系统就会冻结,你会看到张开嘴的图像在闪烁,但你看不到被替换的图像。

我已经测试并确保两个图像都按预期正确加载。

这是我的startAnim()函数,当您双击小程序时调用它:

0 投票
3 回答
13687 浏览

java - Java中的吃豆人迷宫

所以我正在用 Java 构建 pacman 游戏来自学游戏编程。

我有基本的游戏窗口,里面有 pacman sprite 和 ghost sprites,pacman 用箭头键移动,不会超出窗口的墙壁等。现在我正在尝试构建迷宫,就像在这个图片:

吃豆人迷宫

如果没有给我直接/完整的解决方案,有人可以指导我如何构建它吗?我在这里只谈论边界和管道('T' 标记),你不能通过它们,你必须四处走动。不是吃豆人吃的那些点。

以下是我的问题:

1)创建这个迷宫最有效的算法/方法是什么?每次调用paint()方法时都必须绘制它,还是有办法只在游戏开始时绘制它而不再绘制?

2)这将如何实际绘制到屏幕上?我假设fillRect()将被使用?

3) 任何有关碰撞检测的提示(因此 pacman/ghosts 无法穿过墙壁)都会有所帮助。

4)关于如何计算管道之间的空白空间以便在它们之间填充点的任何提示也将非常有帮助。

谢谢

0 投票
4 回答
952 浏览

java - 如何在 Java 游戏中将 400x400 的窗口表示为地图?

我正在构建一个吃豆人游戏。基本上,我想要一个由块/图块组成的窗口的地图表示。然后随着 pacman 角色/幽灵的移动,我会改变它们在地图上的位置以表示屏幕上的内容,并将其用于碰撞检测等。

我该如何构建这张地图,特别是因为屏幕是由 x,y 坐标组成的,所以我怎样才能在地图上正确地表示它们?