嗨我需要画一幅图像,我只希望它的一部分是可见的(圆形)我首先计划的是绘制图像(占据整个JFrame),然后用黑色矩形覆盖它然后在中心上绘制一个完全透明的圆圈,但它不起作用,因为你只能看到我在图像上绘制的黑色矩形。我的第二种方法是绘制一个黑色矩形,在中心切出一个圆圈,因此只能看到一部分图像。我该怎么做呢?还有另一种方法吗?感谢
//the transparent approach
int mat[][] = {{0, 0, 0}, {0, 1, 0}, {0, 0, 0};
for (int r = 0; r < mat.length; r++) {
for (int c = 0; c < mat[r].length; c++) {
if (mat[r][c] == 0) g2d.setPaint(Color.RED)
else if (mat[r][c] == 1) g2d.setPaint(Color.BLACK)
g2d.fillRect(r * 10, c * 10, 10, 10);
}
}
g2d.setPaint(Color.DARK_GRAY);
g2d.fillRect(0, 0, panel.getWidth(), panel.getHeight());
g2d.setPaint(new Color(0f, 0f, 0f, .100f));
g2d.fillOval(0, 0, 100, 100);
答案 0 :(得分:6)
如果你想绘制一个带圆圈的黑色矩形,你可以尝试这样做:
Graphics2D g2d = (Graphics2D) g;
Area a = new Area(new Rectangle(50, 50, 100, 100));
a.subtract(new Area(new Ellipse2D.Double(75, 75, 50, 50)));
g2d.fill(a);
答案 1 :(得分:1)
像
这样的东西class Rect extends JComponent {
public void paint(Graphics g) {
g.setColor(Color.BLACK);
g.drawRect (100, 100, 500, 500);
g.setColor(Color.WHITE);
g.fillOval(150, 150, 250, 250);
}