【问题标题】:panel with image background and mouse draw具有图像背景和鼠标绘制的面板
【发布时间】:2012-08-24 01:17:58
【问题描述】:

如果 paint() 方法已用于其他目的,我如何在 JPanel 中使用图像作为背景? (我试图在面板中绘制图像)。

这是我用铅笔画的代码,但我不知道如何将图像添加为背景?

@Override
public void paint(Graphics g) {

    if (x >= 0 && y >= 0) {
        g.setColor(Color.BLACK);
        g.fillRect(x, y, 4, 4);

    }
}

谢谢迭戈

【问题讨论】:

    标签: java swing jpanel


    【解决方案1】:

    建议:

    • 不要在 JPanel 的 paint(...) 方法中绘制,而是使用它的 paintComponent(...) 方法。这有几个原因,一个是如果您使用paint(...) 方法,那么您还负责绘制JPanel 的边框和子组件,并且有可能弄乱这些家伙的渲染。你也失去了 Swing 的自动双缓冲。
    • 在调用方法中的任何其他代码之前,首先调用父类的超级方法。这将允许 JPanel 刷新其背景并执行任何可能需要完成的图形内务处理。
    • 接下来使用g.drawImage(...) 绘制背景图片,
    • 然后画铅笔。

    【讨论】:

    • 感谢气垫船。我可以解决它!你是一个“groso”,一个西班牙语单词:)
    【解决方案2】:

    充满鳗鱼的气垫船就一个方向提出了很好的建议。这是另一个。

    • 在 (ImageIcon in a) JLabel 中显示图像。
    • 绘画时:
      • BufferedImage 上调用createGraphics() 以获得Graphics2D 对象。
      • 将线条或其他视觉元素绘制到图形实例。
      • 处理图形实例。
      • 拨打标签上的repaint()

    例如如this answer 所示。

    【讨论】:

    • ++1 从我这边也是......这可能会解决我即将发布的一个问题!谢谢@AndrewThompson :)
    • @Sujay 希望它确实有所帮助,但我会留意一个问题。 :)
    猜你喜欢
    • 1970-01-01
    • 2012-09-22
    • 2013-04-10
    • 2016-02-15
    • 2011-11-27
    • 1970-01-01
    • 2019-04-16
    • 2023-03-14
    相关资源
    最近更新 更多