在一个小型的Java swing 2D游戏中,创建棋盘视图的最佳解决方案是什么?
我知道这是主观的,我不想打架.我只需要一些线索来弄清楚自己应该走哪条路.我已经开始了一个侧面项目,我已经使用了1),感觉有些不对劲.
是否有更友好的方式来获取FontMetrics的实例
FontMetrics fm = Graphics.getFontMetrics(Font);
Run Code Online (Sandbox Code Playgroud)
我讨厌这种方式,因为下面的例子:
如果您想在游戏中创建一个菜单,并且您希望屏幕中心的所有菜单项都需要fontmetrics.但是,大多数情况下,菜单项是可点击的.所以我创建了一个数组,Rectangles并且所有矩形都适合于项目,因此当按下鼠标时,我可以简单地使用
for (int i = 0; i < rects.length; i++)
if (rects[i].contains(mouseX, mouseY)) { ... }
Run Code Online (Sandbox Code Playgroud)
但是为了创建rects,我还需要FontMetrics作为它们的坐标.所以这意味着我必须在菜单的paint-method中构造所有的矩形.
所以我想要一种获取FontMetrics的方法,这样我就可以在构造函数调用的方法中构造Rectangles.
有没有办法将 Path2D 剪辑到区域/其他 path2D 实例?
简单的例子(我正在寻找一些可以在一般情况下工作的东西,其中路径可能包括四边形或立方体,并且可能是也可能不是单数):
我有一条线段 (0,10) -> (30,10),我想将其剪辑在三角形 (10,0)、(20,20)、(20,0) 内,理想情况下会产生线段 (15 ,10) -> (20,10)
我可以使用“new Area(Shape);”将 Path2D 转换为区域 然后使用“Area.intersect(area)”进行剪辑,但是如果路径未闭合,这将返回一个空白区域。
我可以使用“Graphics2D.clip(Shape)”剪辑绘图区域,但我希望获得返回的形状(在某些情况下,我希望在实际渲染之前进行进一步的操作)
在浏览了 API 文档后,我找不到直接执行此操作的方法。我错过了什么吗?
这是我调整图像大小的功能。质量虽然不是photoshop的,但也可以接受。
不可接受的是索引 png 上的行为。
我们预计,如果我们缩小具有透明索引的 256 色调色板的图像,我们将得到具有相同透明度的调整大小的图像,但事实并非如此。
因此,我们对新的 ARGB 图像进行了调整大小,然后将其减少到 256 种颜色。问题是如何“重新引入”透明像素索引。
private static BufferedImage internalResize(BufferedImage source, int destWidth, int destHeight) {
int sourceWidth = source.getWidth();
int sourceHeight = source.getHeight();
double xScale = ((double) destWidth) / (double) sourceWidth;
double yScale = ((double) destHeight) / (double) sourceHeight;
Graphics2D g2d = null;
BufferedImage resizedImage = new BufferedImage(destWidth, destHeight, BufferedImage.TRANSLUCENT);
log.debug("resizing image to w:" + destWidth + " h:" + destHeight);
try {
g2d = resizedImage.createGraphics();
g2d.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
g2d.setRenderingHint(RenderingHints.KEY_DITHERING, …Run Code Online (Sandbox Code Playgroud) 我希望能够使用JFreeChart创建类似于以下图片的条形图。

它是一种非常基本的单色条形图,但有一个“奇特”的细节:对角线条纹。我以为可以通过在普通条顶部叠加另一张图片来实现这一点。该图片将具有与条相同的尺寸,并具有对角白色条纹和透明背景。我不太确定如何执行此操作,因为我几乎没有GUI经验,但是我发现了一篇非常有用的文章,涉及将图像叠加在JFreeChart的图形上,因此,我很确定自己应该能够做到这一点。的。
但是我应该如何创建斜条纹?我知道如何分配从左下角到右上角的线,而不是在左上角和右下角的上限线。我可以以某种方式在矩形的外部绘制(并且不包含在图片中)吗?
编辑:经过一些搜索后,我看不到我建议用透明背景覆盖图像,因为我找不到有关如何执行此操作的示例。另一方面,仅在矩形上绘制线条可能会更容易。
我通过使用Java2D Library的drawString(...)函数在屏幕上显示一些图形文本.
指的这个图中的文章,我想从上升段线,而不是基准拉我的字符串.简单来说,有没有办法计算高度b/w上升线和基线?
有没有办法将图像分割成区域(现在它是JLabel但我可以在必要时更改它)?
我在我的程序中使用swing并且我有一个图像(这个例子是正方形),里面有一些三角形,星形和梯形(它可以是JPG,PNG等).
想法是用户将在其中一个形状中单击,然后我将在用户单击的区域顶部放置另一个小图标.用户可以点击多个区域,但在一天结束时,我需要知道点击了哪些形状.
似乎有可能有人吗?
对于我的java应用程序,我需要一个圆形矩形,其轮廓看起来像一个普通的矩形,就像这样

我知道你可以通过在其中绘制一个普通的矩形和一个RoundRect来做到这一点,但我不想在其中绘制一个RoundRect,因为我想在其中绘制其他东西.
所以圆形的矩形有正常的角落.我如何用Java绘制它?
问题是如果我使用图层,矩形看起来像这样:
角落充满了错误的颜色.我该如何预防呢?
我是 Java 和编程的新手,我正在尝试用宇宙飞船和外星人编写一个小射击游戏,但在图形方面有很多问题。似乎我混合了很多不同类型的组件。
我该怎么做才正确?
- 我应该使用 SwingJFrame然后将其添加为Graphics对象吗?
- 我应该先制作一个面板,然后在上面添加图形吗?
- 或者我应该使用画布而不是 JPanel?
有很多选择,在网上搜索答案让我很困惑。一些人建议使用该paint()方法,而另一些人则在使用paintComponent()...
以正确顺序放置图形的首选方式是什么,我应该使用哪些类?
我有一个自定义形状,如图所示.假设覆盖图像中形状的蓝色矩形描绘了该形状的边界框.
如果我在边界矩形的一个对角线上画线,我怎样才能得到交点(在图像中它们是用绿色绘制的)?
我使用的是Java2D,我有一个GeneralPath,其中包含我在屏幕上绘制形状的所有坐标.

java-2d ×10
java ×9
swing ×5
awt ×2
image ×2
animation ×1
fontmetrics ×1
geometry ×1
jfreechart ×1
jlabel ×1
math ×1
overlay ×1
paint ×1
png ×1
transparency ×1