दिलचस्प पोस्ट
Django में, मैं डेटाबेस से 100 यादृच्छिक रिकॉर्ड कैसे चुन सकता हूं? तुम कहाँ से jQuery पुस्तकालय शामिल करते हैं? Google JSAPI? CDN? क्या आप अपने डेटाबेस आइटम के लिए स्रोत नियंत्रण का उपयोग करते हैं? जबकि ((सी = getc (फ़ाइल))! = EOF) लूप निष्पादित करना बंद नहीं करेगा जावा विधियों के लिए नामकरण सम्मेलनों जो बूलीयन वापस करते हैं (कोई प्रश्न चिह्न नहीं) पृष्ठभूमि-छवि पर अर्ध-पारदर्शी रंग परत? शारीरिक पथ से रिश्तेदार आभासी पथ प्राप्त करना ज्वैक @ ओवरराइड एनोटेशन पर क्यों असफल है सी # में बूल और बूलियन प्रकारों के बीच अंतर क्या है एच का उद्देश्य: आउटपुट लेबल और इसकी "के लिए" विशेषता यूआईएलएबल में टेक्स्ट रेखांकित करें बाश में $ PATH चर में पथ को हटाने का सबसे शानदार तरीका क्या है? AngularJS: फैक्टरी $ http.get JSON फ़ाइल एक्स 86 पर क्षैतिज फ्लोट वेक्टर योग करने का सबसे तेज़ तरीका ककड़ी का उपयोग करते हुए असफल परिदृश्यों को फिर से चलाने के लिए?

जावा में एक सर्पिल फैशन में छवि को स्थानांतरित करें

मैं एक साधारण एनिमेटेड परिचय बनाने की कोशिश कर रहा हूं मेरे पास एक छवि है जो मैं स्क्रीन के निचले बाएं से स्क्रीन के केंद्र तक एक घड़ी की चक्कर चाल में ले जाने की कोशिश कर रहा हूं। यह वह कोड है जो मैं अब के लिए उपयोग कर रहा हूं। यह सिर्फ छवि को ऊपर की ओर केंद्र में ले जाता है:

static ImageLoader il = new ImageLoader(); private static BufferedImage logo = il.load("/logoNew.png"); private static Image power = il.gif("http://img.hiwab.com/java/KSnus.gif"); static double y = 1024.0; public static void render(Graphics g){ if(y>(486/2)-128){ y = y-0.25; } if(draw){ g.drawImage(logo,(864/2)-128,(int)y,null); g.setColor(Color.WHITE); g.drawImage(power,10,10,null); } } 

यदि (ड्रा) स्टेटमेंट कुछ और से सक्रिय होता है। मैं छवि को स्थानांतरित करने के बारे में कैसे जाना है क्या मैं सिर्फ एक्स और वाई को अलग-अलग बिंदुओं पर अलग-अलग बढ़ाता हूं?

** संपादित करें ** मैंने इसे प्रस्ताव पर स्पष्ट नहीं किया। यह नीचे की ओर से ऊपर से बायीं ओर ऊपर की ओर ऊपर से नीचे तक नीचे से नीचे के केंद्र (केंद्र) तक स्क्रीन के केंद्र (केंद्र) तक जा रहा है

Solutions Collecting From Web of "जावा में एक सर्पिल फैशन में छवि को स्थानांतरित करें"

एनिमेशन समय के साथ आंदोलन का भ्रम है आम तौर पर मैं एनीमेशन के आधार के रूप में टाइमिंग फ्रेमवर्क (या ट्राइडेंट या यूनिवर्सल ट्विन इंजन ) की तरह कुछ का उपयोग करूँगा, ये आसानी और आसानी से जैसी चीज़ों के लिए बेहतर समर्थन प्रदान करते हैं

निम्नलिखित उदाहरण में सिर्फ एक सरल javax.swing.Timer का उपयोग करता है। मैं इसका उपयोग क्योंकि स्विंग के साथ प्रयोग करना अधिक सुरक्षित है, क्योंकि यह मुझे इवेंट डिस्पैचिंग थ्रेड के संदर्भ में यूआई की स्थिति को अपडेट करने की अनुमति देता है, लेकिन इसे ब्लॉक नहीं करता (स्क्रीन को अपडेट करने से रोकना)।

निम्नलिखित उदाहरण एक समयरेखा और प्रमुख फ्रेम की एक अवधारणा का उपयोग करता है यह, समय पर कुछ बिंदु पर, कुछ होना चाहिए। समयरेखा तब समय में उन "कुंजी" बिंदुओं के बीच मिश्रण के साधन प्रदान करता है

मैं, व्यक्तिगत तौर पर, अमूर्त अवधारणाओं में काम करना पसंद करता हूं, इसलिए समयरेखा को 0-1 से प्रतिशत में मापा जाता है, जिससे मुझे एक चर समय अवधि प्रदान करने की अनुमति मिलती है। यह मुझे कुछ भी बदलने की आवश्यकता के बिना एनीमेशन की गति को समायोजित करने की अनुमति देता है

नेको

जैसा कि आप देखना (सक्षम होना चाहिए), पिछले दो पैरों को केवल आधे दूरी को स्थानांतरित करने की आवश्यकता है, इसलिए वे दूसरे तीन पैरों की तुलना में धीमी हैं, इसलिए, तकनीकी तौर पर, उन्हें केवल पूरा करने के लिए आधे समय की आवश्यकता होती है … लेकिन मैं ' इसके लिए गणित को बाहर निकालने के लिए आप इसे छोड़ देंगे;)

 import java.awt.Dimension; import java.awt.EventQueue; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.Map; import java.util.TreeMap; import javax.imageio.ImageIO; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.Timer; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; public class Test{ public static void main(String[] args) { new Test(); } public Test() { EventQueue.invokeLater(new Runnable() { @Override public void run() { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { ex.printStackTrace(); } JFrame frame = new JFrame("Testing"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(new TestPane()); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } }); } public class TestPane extends JPanel { protected static final int PLAY_TIME = 6000; private Timeline timeline; private long startTime; private Point imgPoint; private BufferedImage img; public TestPane() { try { img = ImageIO.read(new File("C:/Neko.png")); imgPoint = new Point(0, 200 - img.getHeight()); timeline = new Timeline(); timeline.add(0f, imgPoint); timeline.add(0.2f, new Point(0, 0)); timeline.add(0.4f, new Point(200 - img.getWidth(), 0)); timeline.add(0.6f, new Point(200 - img.getWidth(), 200 - img.getHeight())); timeline.add(0.8f, new Point(100 - (img.getWidth() / 2), 200 - img.getHeight())); timeline.add(1f, new Point(100 - (img.getWidth() / 2), 100 - (img.getHeight() / 2))); Timer timer = new Timer(40, new ActionListener() { @Override public void actionPerformed(ActionEvent e) { long duration = System.currentTimeMillis() - startTime; float progress = (float) duration / (float) PLAY_TIME; if (progress > 1f) { startTime = System.currentTimeMillis(); progress = 0; ((Timer) (e.getSource())).stop(); } System.out.println(progress); imgPoint = timeline.getPointAt(progress); repaint(); } }); startTime = System.currentTimeMillis(); timer.start(); } catch (IOException exp) { exp.printStackTrace(); } } @Override public Dimension getPreferredSize() { return new Dimension(200, 200); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); if (img != null && imgPoint != null) { Graphics2D g2d = (Graphics2D) g.create(); g2d.drawImage(img, imgPoint.x, imgPoint.y, this); g2d.dispose(); } } } public static class Timeline { private Map<Float, KeyFrame> mapEvents; public Timeline() { mapEvents = new TreeMap<>(); } public void add(float progress, Point p) { mapEvents.put(progress, new KeyFrame(progress, p)); } public Point getPointAt(float progress) { if (progress < 0) { progress = 0; } else if (progress > 1) { progress = 1; } KeyFrame[] keyFrames = getKeyFramesBetween(progress); float max = keyFrames[1].progress - keyFrames[0].progress; float value = progress - keyFrames[0].progress; float weight = value / max; return blend(keyFrames[0].getPoint(), keyFrames[1].getPoint(), 1f - weight); } public KeyFrame[] getKeyFramesBetween(float progress) { KeyFrame[] frames = new KeyFrame[2]; int startAt = 0; Float[] keyFrames = mapEvents.keySet().toArray(new Float[mapEvents.size()]); while (startAt < keyFrames.length && keyFrames[startAt] <= progress) { startAt++; } if (startAt >= keyFrames.length) { startAt = keyFrames.length - 1; } frames[0] = mapEvents.get(keyFrames[startAt - 1]); frames[1] = mapEvents.get(keyFrames[startAt]); return frames; } protected Point blend(Point start, Point end, float ratio) { Point blend = new Point(); float ir = (float) 1.0 - ratio; blend.x = (int) (start.x * ratio + end.x * ir); blend.y = (int) (start.y * ratio + end.y * ir); return blend; } public class KeyFrame { private float progress; private Point point; public KeyFrame(float progress, Point point) { this.progress = progress; this.point = point; } public float getProgress() { return progress; } public Point getPoint() { return point; } } } }