当前位置: 首页 > 面试题库 >

如何在JPanel上画圆?Java 2D

农雅畅
2023-03-14
问题内容

我有一个JPanel,我为此设置了一些图像作为背景。我需要在图像上方绘制一堆圆圈。现在,圆将基于某个坐标x,y进行定位,其大小将基于某个整数大小。这就是我上课的时间。

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.JPanel;

class ImagePanel extends JPanel {

    private Image img;
    CircleList cList;  //added this

    public ImagePanel(Image img) {
        this.img = img;
        Dimension size = new Dimension(img.getWidth(null), img.getHeight(null));
        setPreferredSize(size);
        setMinimumSize(size);
        setMaximumSize(size);
        setSize(size);
        setLayout(null);

        cList = new CircleList(); //added this
    }

    public void paintComponent(Graphics g) {
        g.drawImage(img, 0, 0, null);

        cList.draw(null); //added this
    }
}

如何创建可以执行此操作的方法?


问题答案:

您的方法可能与此类似,其中您也使用一个类CircleList来容纳所有圆和绘制例程:

class CircleList
{
  static class Circle
  {
    public float x, y, diameter;
  }

  ArrayList<Circle> circles;

  public CirclesList()
  {
    circles = new ArrayList<Circle>();
  }

  public void draw(Graphics2D g) // draw must be called by paintComponent of the panel
  {
    for (Circle c : circles)
      g.fillOval(c.x, c.y, c.diameter, c.diameter)
  }
}


 类似资料:
  • 我正在尝试使用“绘画组件”或“绘画”来显示我添加到框架中的 JPanel 上的形状。我尝试了许多教程,但它们似乎只是使整个框架成为“面板”。我想添加到我的JPanel中,我已经添加到我的框架中。 这是我到目前为止的代码: 我不想把框架做成一个巨大的面板并在上面绘图,因为我正在添加单选按钮来创建特定的形状,我只是在网上看到人们向你展示如何为整个框架扩展JPanel。我问的是不可能的吗?

  • 我正在使用新的API(Google Map API V2)为我的android应用程序,我已经创建了地图并添加了标记,现在我的任务是手动创建一个围绕任何标记的圆,我还想为用户提供一个功能,他可以相应地增加该圆的半径,为此我给出了一个条,当用户增加该条时,圆的半径将增加,反之亦然。 如果有人知道如何使用GoogleMapAPIV2来完成此操作,请提供帮助,

  • 我想用javascript在响应画布上画一个圆圈。我得到了画布的宽度和高度,但由于div标签的宽度和高度%,我能够正确地画出圆圈。div标记的宽度和高度以%为单位,因为我想在单个页面上显示5个画布。是否有其他方法可以在一页上放置5块画布,并使用画布的高度和宽度在每个画布上画一个圆圈?还有一件事,我不想要绝对位置,因为根据浏览器的宽度,我想要改变画布的位置 图片:192.168。10.29/1.巴布

  • 我想知道如何优化我的画圆方法。在将顶点发送到opengl之前,我寻求如何尽快生成顶点。 FillRect函数只绘制一个四边形,因此DrawCircle函数绘制100个四边形,这些四边形按cos、sin和半径移动。 我怎么能以不同的方式画圆呢?

  • 问题内容: 我发现只能填充矩形,而没有圆角,该怎么办? 问题答案: HTML5画布没有提供绘制带有圆角的矩形的方法。 如何使用和方法? 您也可以使用方法代替方法。