Java 如何填充形状(椭圆形)外部的颜色
我希望能够使用Graphics2D实例在BuffereImage上绘制,并在形状的外部填充颜色。如果这是一个像矩形这样的形状,那就很容易了,但是我需要处理的形状是一个圆 用颜色填充圆圈很容易,只需写下:Java 如何填充形状(椭圆形)外部的颜色,java,graphics2d,shapes,fill,Java,Graphics2d,Shapes,Fill,我希望能够使用Graphics2D实例在BuffereImage上绘制,并在形状的外部填充颜色。如果这是一个像矩形这样的形状,那就很容易了,但是我需要处理的形状是一个圆 用颜色填充圆圈很容易,只需写下: Graphics2D g2d = <my_image>.createGraphics(); ... g2d.fillOval(x, y, width, height); Graphics2D g2d=.createGraphics(); ... g2d.圆角椭圆(x,y,宽度,高度
Graphics2D g2d = <my_image>.createGraphics();
...
g2d.fillOval(x, y, width, height);
Graphics2D g2d=.createGraphics();
...
g2d.圆角椭圆(x,y,宽度,高度);
然而,我想要的恰恰相反。我不想填充被数字(x,y,宽度,高度)破坏的椭圆形的内部,我想填充它外部的所有东西
我在这方面几乎没有成功。我唯一想到的就是在我想让圆圈占据的空间周围画一个巨大的拱门,因为我很难计算出这个数字
<编辑>:为什么我不能填满整个图像然后画圆圈,是因为圆圈里的东西不是单一的颜色,而是我想拍摄一张图像(任何图像,像我自己的照片),并且能够在该图像的中间围绕一个圆添加一个单一的颜色。所以,在圆圈中间的任何东西都是在画它之前就已经存在了,它并不是最初由代码绘制的东西。 < P>如果你把背景变成一个纯色而你离开了椭圆白色的内部?
JPanel.setBackgroundColor(Color.black);
然后画并填满你的椭圆
g2d.setColor(Color.white);
g2d.drawOval(x, y, width, height);
g2d.fillOval(x, y, width, height);
这将有助于将它们进行对比,例如以下是一个基于 它使用
java.awt.geom.Area
中的方法
Area outter = new Area(new Rectangle(0, 0, img.getWidth(), img.getHeight()));
int x = (img.getWidth() / 4) ;
int y = (img.getHeight() / 4);
Ellipse2D.Double inner = new Ellipse2D.Double(x,y, img.getWidth()/2, img.getHeight()/2);
outter.subtract(new Area(inner));// remove the ellipse from the original area
g2d.setColor(Color.BLACK);
g2d.fill(outter);
无裁剪(即无g2d.填充(outter)
零件):
带裁剪(外部填充黑色)
:
数学是这样的:
如果知道圆在(x,y)处,半径为r
for(i=0; i<width; i++)
for(j=0; j<height; j++)
if((i-x)*(i-x)+(j-y)*(j-y))>r*r)
b.setRGB(i, j, 0xff0000);
对于(i=0;我如何使用新颜色绘制整个背景,然后绘制圆圈?这不起作用(请参见编辑)这看起来很完美,我喜欢使用我的个人资料图像XD的感觉