Мой код поворачивает изображение на 0,4 градуса каждое «обновление», изображение непрерывно вращается в диапазоне [-10, + 10]. Проблема в том, что буферизованное изображение обрезается по краям при повороте, похоже, что вращение изменяет размер, который требуется для буферизации, но размер никогда не обновляется, любые идеи, как я могу заставить его работать?BufferedImage отключается после вращения
protected double rotation = 0;
private double rotDir = 0.4;
private BufferedImage getRotatedSprite(){
if(Math.abs(rotation)>10)
rotDir=rotDir*(-1);
rotation+=rotDir;
ImageIcon icon = new ImageIcon(bImage);
BufferedImage bImg = new BufferedImage(icon.getIconWidth(),
icon.getIconHeight(), BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d= (Graphics2D)bImg.getGraphics();
g2d.rotate(Math.toRadians(rotation), icon.getIconWidth()/2, icon.getIconHeight()/2);
g2d.drawImage(bImage, 0, 0, null);
return bImg;
}
public void drawSprite(Graphics g) {
BufferedImage image = getRotatedSprite();
if(customWidth != -1 && customHeight != -1){
g.drawImage(image, (int)locX, (int)locY, customWidth, customHeight, this);
}else
g.drawImage(image, (int)locX, (int)locY, this);
}
Если вы заинтересованы в математике, вы можете взглянуть на это [например] (http://stackoverflow.com/questions/20275424/rotating-image -с-AffineTransform/20280225 # 20280225) – MadProgrammer