在 black/white 背景上旋转的二维图形
Graphics 2D rotating on black/white background
我有一个函数可以在 g2 组件上绘制旋转的图片,但由于某些原因我不能给它任何彩色背景...
我试图使用方法 .setColor() 和 .setBackground() 但没有用。
我在这里看到过类似的案例 Graphics2D: Drawing black on white?
但它并没有真正帮助。这是我的功能:
public void rotateImage1(double degrees, ImageObserver o){
double sin = Math.abs(Math.sin(Math.toRadians(degrees)));
double cos = Math.abs(Math.cos(Math.toRadians(degrees)));
ImageIcon icon = new ImageIcon(this.spiral);
int w = icon.getIconWidth();
int h = icon.getIconHeight();
int neww = (int)Math.floor(w*cos+h*sin);
int newh = (int)Math.floor(h*cos+w*sin);
BufferedImage blankCanvas = new BufferedImage(neww, newh, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = (Graphics2D)blankCanvas.getGraphics();
if(PhotoEdit.black)
g2.setColor(Color.BLACK);
else
g2.setColor(Color.WHITE);
g2.translate((neww-w)/2, (newh-h)/2);
g2.rotate(Math.toRadians(degrees), icon.getIconWidth()/2, icon.getIconHeight()/2);
g2.drawImage(this.spiral, 0, 0, o);
this.spiral = blankCanvas;
}
PhotoEdit.black 是一个布尔变量,如果用户选择了带有黑色背景选项的复选框,则该变量为真。
您正在图形中设置颜色,但并未将其绘制到面板。
您可以使用 g2.setColor(...)
和 g2.fillRect(...)
并指定覆盖整个面板的坐标,然后在上面绘制图像。
fillRect 的文档:http://docs.oracle.com/javase/7/docs/api/java/awt/Graphics.html#fillRect%28int,%20int,%20int,%20int%29
我有一个函数可以在 g2 组件上绘制旋转的图片,但由于某些原因我不能给它任何彩色背景... 我试图使用方法 .setColor() 和 .setBackground() 但没有用。 我在这里看到过类似的案例 Graphics2D: Drawing black on white? 但它并没有真正帮助。这是我的功能:
public void rotateImage1(double degrees, ImageObserver o){
double sin = Math.abs(Math.sin(Math.toRadians(degrees)));
double cos = Math.abs(Math.cos(Math.toRadians(degrees)));
ImageIcon icon = new ImageIcon(this.spiral);
int w = icon.getIconWidth();
int h = icon.getIconHeight();
int neww = (int)Math.floor(w*cos+h*sin);
int newh = (int)Math.floor(h*cos+w*sin);
BufferedImage blankCanvas = new BufferedImage(neww, newh, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = (Graphics2D)blankCanvas.getGraphics();
if(PhotoEdit.black)
g2.setColor(Color.BLACK);
else
g2.setColor(Color.WHITE);
g2.translate((neww-w)/2, (newh-h)/2);
g2.rotate(Math.toRadians(degrees), icon.getIconWidth()/2, icon.getIconHeight()/2);
g2.drawImage(this.spiral, 0, 0, o);
this.spiral = blankCanvas;
}
PhotoEdit.black 是一个布尔变量,如果用户选择了带有黑色背景选项的复选框,则该变量为真。
您正在图形中设置颜色,但并未将其绘制到面板。
您可以使用 g2.setColor(...)
和 g2.fillRect(...)
并指定覆盖整个面板的坐标,然后在上面绘制图像。
fillRect 的文档:http://docs.oracle.com/javase/7/docs/api/java/awt/Graphics.html#fillRect%28int,%20int,%20int,%20int%29