【问题标题】:Java How can I put an image on a rectangleJava如何将图像放在矩形上
【发布时间】:2016-03-30 08:44:42
【问题描述】:

这是代码

 player = createEntity(400, 600, 40, 60, Color.BLUE);

private Node createEntity(int x, int y, int w, int h, Color color) {
    Rectangle entity = new Rectangle(w, h);
    entity.setTranslateX(x);
    entity.setTranslateY(y);
    entity.setFill(color);

    gameRoot.getChildren().add(entity);
    return entity;

}

我不确定如何将图像放到我的播放器中,有什么想法吗?

【问题讨论】:

  • 这取决于事物的绘制方式,但本质上,您将在同一位置绘制一个然后另一个
  • 您也可以将矩形直接绘制到图像上,但同样,这归结为比您告诉我们的要了解更多

标签: java image import rectangles


【解决方案1】:

Java 如何将图像放在矩形上

我的建议(如果这是 Swing)不是使用 Rectangle,或者使用 Rectangle,而是作为更大解决方案的一部分。

相反,我会创建一个逻辑类,可能称为 Entity,它有一个位置、一个图像和一个接受 Graphics 参数的 draw 方法,在所需的任何位置绘制其图像,然后创建 Entity 对象。然后在我的 JPanel 的 paintComponent 方法中,我将遍历所有创建的实体,调用它们的 draw 方法。

【讨论】:

    【解决方案2】:

    首先,您需要使用active rendering。这将防止您遇到与刷新显示相关的各种问题,并且假设您请求多个缓冲区,Java 的 BufferStrategy 会自动为您处理多缓冲区。


    现在您确定屏幕已更新,在渲染时,您可以使用drawRect 方法绘制一个带有java.awt.Graphics 对象的矩形。如果您想填充此矩形,请使用fillRectGraphics 对象以预定义的颜色绘制所有内容。如果您想改变颜色,您可以致电setColor。此方法需要 java.awt.Color 对象作为参数,它允许您使用其中一个构造函数定义所有可能的 64 位透明颜色。它还有一些预定义的颜色,例如Color.RED,即0xFF0000

    我建议您探索Graphics 必须提供的所有方法,甚至可以查看Graphics2D,它支持一些额外的东西。请注意,大多数Graphics 对象可以转换为Graphics2D,但如果您不确定,您可能想要查看Java 的源代码(JDK 安装中有一个src.zip)或使用@987654336 @ 查看。事实上,Graphics2D 支持使用drawShapefillShape 方法绘制类似Rectangle 的形状。


    对于那些好奇的人,0xFF0000 是一种格式化颜色的方法。它被 RGB 编码为十六进制 (0xRRGGBB)。它也通常用其他语言表示#FF0000,例如 CSS(层叠样式表,用于轻松格式化 HTML 文档)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-23
      • 2021-08-19
      • 1970-01-01
      • 1970-01-01
      • 2016-09-22
      相关资源
      最近更新 更多