सबसे पहले, यह पहला सप्ताह है जिसे मैं स्विंग का उपयोग करता हूं, तो क्षमा करें यदि मेरा प्रश्न बहुत स्पष्ट है। साथ ही, मुझे मानक जावा पुस्तकालयों का उपयोग करने वाले समाधानों की आवश्यकता है, क्योंकि यह होमवर्क के लिए है और मुझे अजीब पुस्तकालयों का उपयोग करने की अनुमति नहीं है।जावा स्विंग पर JLabel या ImageIcon घुमाएं
मैं जेएफआरएएम पर छवियों को दिखाने के लिए छवि आइकन के साथ जेएलएबल का उपयोग कर रहा हूं। अब मैं स्क्रीन पर छवि को मनमाने ढंग से कोणों पर घुमा देना चाहता हूं। मुझे ग्राफिक्स 2 डी के बारे में कुछ मिला लेकिन मुझे ऐसा करने का तरीका नहीं मिला।
चूंकि जो समाधान मैंने पाया है वह काम नहीं करता है या मैं उन्हें समझ नहीं पा रहा हूं, मुझे ImageIcon या JLabel को घुमाने के लिए किसी भी समाधान में रूचि है। चूंकि मैं जेएलएबल पर सेटबाउंड करने वाली छवि को स्थान दे रहा हूं, इसलिए जेएलएबल एक बेहतर समाधान होगा जो मुझे लगता है (इस तरह मुझे छवि आइकन ऑब्जेक्ट को भी सहेजने के लिए मजबूर नहीं किया गया है)।
आपके बुरे अंग्रेजी के लिए आपका ध्यान और खेद के लिए धन्यवाद।
JFrame frame = new JFrame("Something");
frame.setLayout(new FlowLayout()); //for example
JPanel panel = new JPanel();
panel.setLayout(null);
ImageIcon playerSprite = new ImageIcon("rute/to/file.png");
JLabel player = new JLabel(playerSprite);
panel.add(player);
player.setBounds(10,10,36,52); //for example
frame.getContentPane().add(panel);
frame.setVisible(true);
फिर से शुरू करना, मैं कैसे इस IconImage या JLabel बारी बारी से कर सकते हैं:
संपादित करें ... स्क्रीन में छवि मैं आगे क्या दिखाने के लिए। अगर आपको लगता है कि यह बेहतर है तो मैं छवि दिखाने के लिए अन्य विधि का उपयोग कर सकता हूं। समाधान Graphics2D उपयोग करते हैं, की तरह मैं देख रहा हूँ, मैं इस वर्ग की एक वस्तु के लिए आने के लिए एक के बाद एक ImageIcon को घुमाया छवि वापस आ, क्योंकि जब मैं यह कोशिश एक समाधान की सराहना करेंगे ...
ImageIcon imagePlayer = new ImageIcon("img/stand.png");
Image image = imagePlayer.getImage();
Graphics2D g = (Graphics2D)image.getGraphics();
पर निष्पादन समय, इस सवाल का जवाब इस ...
Exception in thread "main" java.lang.UnsupportedOperationException: getGraphics() not valid for images created with createImage(producer)
2th संस्करण ... अब मैं इस कोड के साथ काम कर रहा हूँ है। छवि घूमती है लेकिन पुरानी अनारक्षित छवि अभी भी नई स्क्रीन के नीचे स्क्रीन पर बनी हुई है। एक ही निर्देशिका पर स्टैंड.png नामक एक पीएनजी छवि डालें और आप इसे देखेंगे।
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.lang.Math;
public class Test {
public static void main(String args[]) throws Exception {
try {
JFrame frame = new JFrame("Rotation Test");
frame.setBounds(10,10,1008,756);
BufferedImage bi = ImageIO.read(new File("stand.png"));
Graphics2D g = (Graphics2D)bi.getGraphics();
g.rotate(Math.toRadians(45),26,26);
g.drawImage(bi, 0, 0, null);
JLabel player = new JLabel(new ImageIcon(bi));
frame.getContentPane().add(player);
player.setBounds(0,0,100,100);
frame.setVisible(true);
} catch (IOException ex) {
System.out.println("Exception");
}
}
}
+1 एक संगत उदाहरण के लिए; एक अभ्यास के रूप में, मेरे उदाहरण के 'RotatableImage.getImage() 'या @ कैमिकर' घुमावदार आइकन 'का उपयोग करके इसे पूरा करने का प्रयास करें। – trashgod