问题标签 [graphics2d]
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 类和方法移植到 Android。(TextLayout、Font、Graphics2D 等)
我一直在玩弄 Android 并尝试移植 Java 应用程序。以下是一些关于我遇到的问题的问题,并希望得到一些指导。
这是一个相当大的问题(而是多个问题)。但是,我并没有盲目地问他们,因为我已经研究了我可以对他们做些什么,并试图将我的理解付诸实践。我已经花时间提出问题,希望他们对我想要实现的目标有一半的了解。
我将提供一半的代表作为赏金,因为我希望得到彻底的答案和帮助,希望这足以吸引一些人提供帮助。
在此先感谢您的时间和帮助!(期待阅读回复)。
TextLayout && 字体 && Graphics2D
有问题的是以下类和方法:
TextLayout
TextLayout.getAdvance()
TextLayout.getAscent()
TextLayout.draw()
Graphics2D.getFontRenderContext()
我不太确定TextLayout
Android中的等价物。我读过有些人制作TextView
并使用它,但我不确定这是否会
为以下工作。我会提供一些我想做的事情的来源,也许有人可以帮助我。
Java 源代码:
Android复制尝试:
我一直在确定如何创建 TextLayout 以及为该方法做什么getAdvance()
。我注意到Paint.FontMetrics()
里面有
一些可能的替代方案,但我不知道是否有任何比较。
我也不确定如何处理以下 Java 代码:
以上问题的回顾/总结:
- 什么是 Android 替代品
TextLayout
? - 相当于什么
TextLayout.getAdvance()
?(我可以用来fontMetrics
实现它吗?) - 有安卓的等价物
Graphics2D.getFontRenderContext()
吗? - 你能提供Android的示例源吗?
这是目前我将 Java 移植到 Android 时遇到的最大问题之一。如果有任何帮助、建议、示例等,我将不胜感激。
字体
以下是我想要复制的处理font
、textlayout
和的方法graphics2d
。第一个来源是 Java 方法和
下面是我复制它的尝试。
有问题的是以下类和方法:
Font.deriveFont(float size)
通过复制当前字体对象并向其应用新样式来创建新字体对象TextLayout.getAdvance()
前进是在行方向上测量的从原点到最右边(最底部)字符前进的距离Graphics2D.setRenderingHint(RenderingHints, RenderingHints)
Graphics2D.getFontRenderContext()
封装应用程序提示,例如抗锯齿和分数度量
Java 源代码:
安卓尝试:
关于上述方法的最后问题:
- 我有什么选择
TextLayout.getAdvance()
?(忽略是否由于有关TextLayout的问题已回答) - 我有什么选择
Graphics2D.getFontRenderContext()
? - 我的 Android 源代码是否复制 Java 源代码?如果不是,需要改变什么?
- 有没有更好的方法来做到这一点?如果是这样,怎么做?
Elipse2D.Double(双 x,双 y,双 w,双 h)
有没有办法创建一个椭圆的子类来创建等同于 Java Ellipse2D.Double 的东西?如果是这样,一个人会怎么做?
组件适配器 && 组件事件
我在 java 中有这些,因为我的组件可以调整大小,在 Android 中这些视图的等价物是什么?(如有)
java - 在 Java 中绘制像素图像
哪种方法是用java创建像素图像的最佳方法。说,我想创建一个尺寸为 200x200 的像素图像,总共 40.000 像素。如何从随机颜色创建像素并将其渲染到 JFrame 上的给定位置。
我试图创建一个只创建像素的自己的组件,但如果我使用 for 循环创建这样的像素 250.000 次并将每个实例添加到 JPanels 布局中,这似乎不是很高效。
java - 我应该为我的 2D 滚动地图使用什么缓冲策略?
所以,我正在用 Java 创建一个 2d 自上而下的游戏。
我正在遵循Java 2D 中的说明:硬件加速 - 第 2 部分 - 缓冲策略以利用硬件加速。
基本上,我在想的是:
我希望能够轻松地向地图添加更多部分。所以我宁愿不走我见过的一些教程中建议的路线(每个地图图块都有一个周围图块的邻接列表;从中心图块开始,使用广度优先搜索填充屏幕)。
相反,我的想法是拥有屏幕大小的图块集合(为简单起见,例如 32x32),并且这些屏幕“块”中的每一个都会有一个引用每个相邻集合的列表。然后,我将为当前屏幕和 8 个相邻屏幕创建一个缓冲区,并在 VRAM 缓冲区中绘制可见部分。
我的问题是,这是解决此问题的正确方法,还是有更好的选择?我浏览了很多教程,但它们似乎都提供了相同的(看似高维护)选项。
看起来这将是一个更好的选择,因为在 tile 级别执行操作将需要 1024 倍的邻接列表。另外,我考虑只将可见部分放在 VRAM 中,而将“当前”屏幕及其相邻屏幕留在标准缓冲区中的原因是因为我是硬件加速的新手,并且不完全确定可以接受多少空间可用。因为 Java 无论如何都试图加速标准缓冲区,理论上它应该与将每个缓冲区放入 VRAM 一样快?
欢迎任何和所有建议!
java - Java调整图像中心大小
前几天我在看别的东西,感觉我记得跑过一种方法来调整图像的大小,但保持图像两侧的区域不变,这样无论长度如何,图像的圆形边缘看起来总是一样的的缩放图像。经过一番谷歌搜索后,我找不到我记得看到的东西,所以我想知道这是否可能以及是否有人有信息。
具体来说,我所拥有的是一个自定义边框,它看起来像一个带有标签的悬挂标签。图像顶部为方形,底部边缘为圆形。无论标签的长度如何,我都想保持底部圆角,但将中心拉伸约 90% 以容纳更大的标签。我假设它会在这段代码中我可以输入一些插图的地方?在调整大小的方法中。
swing - 调整绘图大小以匹配框架大小
我编写了一个应用程序,可以根据固定的像素位置自定义绘制 paint() 内的所有内容。然后我禁用了框架的调整大小,使其始终可见。
但是,现在我希望能够调整它的大小,但我不想更改我的绘图代码。我希望在我的所有绘图代码之后,我可以抓住 Graphics g 对象的 300x300 方格并将其调整为 JFrame 当前大小,但我不知道我在做什么。
这里是示例代码。在此我希望 100x100 的正方形保持在中间,与调整后的 JFrame 成比例:
谢谢。
java - 如何在 Graphics2D 上下文中为 Path2D 对象上的矩形设置动画
我刚刚开始学习有关 Graphics2D 类的基础知识,到目前为止,我能够绘制不同的对象和实现ActionListener
,以便在屏幕上实际移动它们onKeyPress
。到目前为止一切顺利,虽然我想做一些更复杂的事情。我想为我的对象提供一条路径,并仅在该特定路径上为其设置动画。
就像,我会在天空上画一条线,一架飞机应该坚持这条线并保持它自己在这条特定的线上飞行。现在有可能吗?
我不需要任何类型的代码,但是很少有不同的方法或想法可以让我开始研究这个。我的想法的可视化阐述如下。
起点 :
终点:
现在如上所示,我的黄色框(在未来的平面上)在动画时应该坚持给定的路径(路径灰线)
到目前为止,我的研究,
我已经搜索了我的流行词,例如 java 中的路径,并找到了Path2D
类GeneralPath
,有谁知道我是否可以用它来解决这个问题。
谢谢
java - 多个屏幕上的 VolatileImage JFrame
我有一个 JFrame,我在其中使用 Graphics2D 使用本教程绘制 VolatileImage。我主要复制了代码以查看它是如何工作的,但对我的游戏进行了轻微的编辑。我正在用两个屏幕运行我的电脑。
当我将游戏窗口拖到最初没有出现该窗口的另一个屏幕上时,就会出现问题。窗口变灰,屏幕上不显示任何图形,即使是我用 Graphics2D 绘制的简单矩形也是如此。这只发生在我调用 volatileimage 的 draw 方法时,如教程中所示。
我相信这可能与此有关...
...但我不确定。
任何帮助将不胜感激。知道 VolatileImage 是否是我应该为我的游戏使用的方式,或者 BufferedImage 或其他东西是否是性能和帧速率的更好方法也会很有趣。
java - 坐标转换困境,用户坐标到设备坐标?
我正在从事一项任务,其中包括“毫米”中道路的“长度”等数据。根据规范,我的 JFrame 应该是 4meter * 3meter (如何将其转换为设备坐标...?)。
现在,我至少知道这些数据是真实世界的数据,而不是设备的像素数据。然而,在找到一些来源之后,您实际上可以通过 Graphics2D 类将这些数据转换为像素。
资源我发现这些信息在,
核心 Java 2,第 II 卷 - 高级特性,作者 - Cay S. Horstmann 和 Gary Cornell
但是,我用谷歌搜索了没有运气的实际例子。
有谁知道我可以阅读更多相关信息的任何来源。如果你有任何例子表明有人实际上做了这样的事情,那将提供更多信息。
迄今为止的研究:到目前为止,我知道我们需要假设 Graphics2D 类的像素数以米为单位。在 Graphics2D 中有一种方法可以帮助您设置此假设。方法是,
我尝试了上面的代码,但真的很难在我真正想要的地方画线。
任何理解的帮助都会非常有帮助。
谢谢
java - 使用 Java 的 Path2D 创建钢笔工具的问题
我一直在尝试使用 Path2D 类和鼠标侦听器为我的 Java 绘图程序创建一个钢笔工具,但我得到了令人困惑的结果。该工具将工作几秒钟,但随后整个应用程序将冻结并且必须关闭。(这里没有例外;程序只是冻结)。这是一个演示该问题的 SSCCE:
我编写了自己的Path
类,在这里可以完美运行,但我想使用 Path2D 类中的一些附加功能。
我在这里做错了什么还是 Path2D 不能做我想做的事情?
任何帮助将不胜感激。
java - 用java播放视频
问题是:我需要用 Java 播放视频(任何类型:avi、wav 等)。几天前我尝试了 JMF API,但它不会播放任何视频。从那以后,我听说它有问题并且不支持,所以我放弃了。我也尝试过 jffmpeg,但它太重了,因为我只想在程序运行之前播放一点演示文稿。还有其他方法可以做到这一点,我可以尝试另一个库吗?