我真的需要一些帮助。我试着把一个图像裁剪成一个圆,它很好,但圆外的像素保持白色。我怎样才能让它们透明?
我的代码是:
static ColorImage Circulo(ColorImage img, int radius) {
for (int x=0; x < img.getWidth(); x++ ) {
for(int y=0; y < img.getHeight(); y++) {
if((x - (img.getWidth()/2)) * (x - (img.getWidth()/2)) + (y - (img.getHeight()/2) )* (y - (img.getHeight()/2)) <= (radius*radius)) {
img.setColor(x, y, img.getColor(x, y));
}else {
Color c = new Color (255, 255, 255);
img.setColor(x, y, c );
}
}
}
return img;
}
1条答案
按热度按时间jvlzgdj91#
试试这个。这将在屏幕上画一个圆圈内的图像。如果要创建新图像,请从
BufferedImage
并将图像写入其中,而不是其中的图形上下文paintComponent
. 任何图像格式都可以工作,因为这不依赖于图形图像的任何透明度模式。这背后的主要思想是设置
clip region
变成一个圆。那么你画的东西只会出现在那个区域。在本例中,我将圆的直径设置为图像宽度和高度的最小值。这样,整个圆将适合于一个矩形。