绘制透明圈以外的填充透明

2023-09-07 09:23:39 作者:污界小仙女

我有,我想画一个圈就专注于某一特定领域一个图形页面。但我想圆反转。即,代替的圆的内部被填充,它是透明的和其他一切被充满。看到这样的画面对我的意思(https://m.xsw88.com/allimgs/daicuo/20230907/4865.png)。上半部分显示什么我可以做一个正常的循环。下方显示倒圈子。

I have a mapview that I want to draw a circle on to focus on a given area. But i want the circle to be inverted. That is, instead of the inside of the circle being filled, it is transparent and everything else is filled. See this picture for what i mean (https://m.xsw88.com/allimgs/daicuo/20230907/4865.png). The top half shows what i could do with a normal circle. Bottom shows the "inverted" circle.

我试图寻找,但它一直有种很难找到我想要什么。有谁知道我怎么能去这样做这样的事情?

I've tried to search, but it's been kind of hard to find what i want. Does anyone know how i could go about doing something like this?

推荐答案

您可以创建一个新的BufferedImage,填充灰色然后删除您要圆。

You can create a new BufferedImage, fill it grey then erase the circle where you want.

然后,得出的BufferedImage您的视图的顶部。

And then, draw that BufferedImage on top of your view.

BufferedImage img = new BufferedImage(sizeX, sizeY, BufferedImage.TYPE_INT_RGBA);
Graphics2D g = img.createGraphics();

int ovalX = 50;
int ovalY = 70;
int ovalRadius = 20;

/* Draw the grey rectangle */
g.setColor(Color.GRAY);
g.fillRect(0, 0, sizeX, sizeY);

/* Enable Anti-Alias */
g.setRenderingHint(RenderingHints.HINT_ANTIALIAS, RenderingHints.VALUE_ANTIALIAS_ON);

/* Clear the circle away */
g.setComposite(AlphaComposite.CLEAR, 1.0f);
g.fillOval(ovalX - ovalRadius, ovalY - ovalRadius, 2 * ovalRadius, 2 * ovalRadius);

g.dispose();
 
精彩推荐
图片推荐