के साथ छवि घूर्णन करने के लिए मुझे Airplane
नामक कक्षा मिली है। इस कक्षा के अंदर मुझे परिवर्तनीय img
मिला है जो BufferedImage
प्रकार है।AffineTransform
@Override
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(mapa, 0, 0, getWidth(), getHeight(), null);
drawAirplanes(g2d);
}
समारोह इस तरह drawAirplanes()
देखो:
private void drawAirplane(Graphics2D g){
for(Samolot i: s){
i.rotateAirplane();
g.drawImage(i.getImg(),i.getX(),i.getY(),(int)i.getDim().getWidth(),(int)i.getDim().getHeight(), null);
}
}
यह बस) 1 की जरूरत है हवाई जहाज (हवाई जहाज ऑब्जेक्ट के अंदर BufferedImage बारी बारी से) 2) आकर्षित किस क्लास WorldMap
अधिक मैं मिल गया है जो समारोह paintComponent(Graphics g)
ओवरराइड करता है है उसे।
मेरे Airplane.rotateAirplane() फ़ंक्शन इस तरह दिखता है:
public void rotateSamolot() {
AffineTransform tx = new AffineTransform();
tx.translate(10,10); //10, 10 is height and width of img divide by 2
tx.rotate(Math.PI/2);
tx.translate(-10,-10);
AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_BILINEAR);
BufferedImage newImage =new BufferedImage(20, 20, img.getType()); //20, 20 is a height and width of img ofc
op.filter(img, newImage);
this.img = newImage;
}
ओएफसी जब मेरे कार्यक्रम चलाने im केवल mapa
वस्तु ली गई है। जब im इस लेन को हटाने
this.img = newImage;
मैं अपने हवाई जहाज भी नहीं बल्कि घुमाया ओएफसी मिला है।
मैं सुनिश्चित नहीं हूं आप AffineTransform का अनुवाद करना चाहते हैं, इसके बजाय, आपको घूर्णन विधि के साथ घूर्णन बिंदुओं की आपूर्ति करना चाहिए, जो आम तौर पर केंद्र बिंदु है, लेकिन यह आपके ऊपर है। मैं रोटेशन के परिणाम को वापस मास्टर छवि पर भी असाइन नहीं करता हूं अन्यथा आप घूर्णन को जोड़ते हैं .... – MadProgrammer
मैं मूल रूप से क्या सोचता हूं "सोचता है", क्या आपकी छवि उपलब्ध स्थान के "सीमाओं से बाहर" घुमाया जा रहा है ... – MadProgrammer
आप [इस उदाहरण] पर एक नज़र डाल सकते हैं (http://stackoverflow.com/questions/15779877/rotate-bufferedimage-inside-jpanel/15780090#15780090) – MadProgrammer