【问题标题】:How can I "erase" something I've drawn on a Java Graphics2D Canvas without deleting something that's behind it?我怎样才能“擦除”我在 Java Graphics2D Canvas 上绘制的东西而不删除它背后的东西?
【发布时间】:2023-03-22 02:10:01
【问题描述】:

我正在编写一个在坐标系上绘制特定图形(基于通过 JSlider 给出的参数)的程序。 我遇到的问题是我的坐标系也绘制在该画布上,如果我要使用“clearRect”方法,它将删除我想要摆脱的图形以绘制新的图形JSlider 更新以及坐标系。 有没有办法“锁定”坐标系,使其不会被删除或类似的东西?

【问题讨论】:

  • 只需在paintComponent(Graphics g) 和周围的JPanel 中绘制网格。
  • 以 XOR 模式绘制它,当你想要它消失时只需重新绘制它。

标签: java swing awt graphics2d jslider


【解决方案1】:

不要直接在画布上绘制。创建对象列表,例如坐标系和对象。当发生变化时,您可以操作列表(添加或删除对象)和repaint 画布。

List 中的每个对象都可以使用 draw() 方法实现接口Drawable。所以列表将是List<Drawable>。在画布的paint() 中遍历所有对象并调用draw()。

【讨论】:

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