2010-08-16 15 views
6

पर बिटमैप घुमाएं मेरे पास कुछ ऑब्जेक्ट्स हैं जो मैं SurfaceView के हिस्से के रूप में कैनवास पर आकर्षित करता हूं। मैं इन प्रोग्रामेटिक रूप से घुमाने में सक्षम होना चाहता हूं, उदा।एंड्रॉइड कैनवास

public class Particle { 

    public void draw(Canvas canvas){ 
    image.setBounds((int)(xPos), (int)(yPos), (int)(xPos+radius), (int)(yPos+radius)); 
    image.draw(canvas); 
    } 

} 
+0

छवि क्या है स्थापित करने के लिए कैसे थे? बिटमैप? – Siten

उत्तर

5

तुम सिर्फ मेरे लिए

canvas.rotate(90) :) // 90 is degree.

+2

और कैनवास.रोटेट (0) बाद में! – fredley

+4

canvas.save() और canvas.restore() अधिक कुशल है। – methodin

+12

लेकिन यह कैनवास पर सभी वस्तुओं को घुमाता है। मैं केवल एक घुमाने के लिए चाहता हूँ। वास्तव में वे छवियों को एनिमेट कर रहे हैं, इसलिए धागे में बुलाया जा रहा है। –

42

कॉल करने के लिए यह क्लीनर लगता है यह करने के लिए है:

Matrix rotator = new Matrix(); 

// rotate around (0,0) 
rotator.postRotate(90); 

// or, rotate around x,y 
// NOTE: coords in bitmap-space! 
int xRotate = ... 
int yRotate = ... 
rotator.postRotate(90, xRotate, yRotate); 

// to set the position in canvas where the bitmap should be drawn to; 
// NOTE: coords in canvas-space! 
int xTranslate = ... 
int yTranslate = ... 
rotator.postTranslate(xTranslate, yTranslate); 

canvas.drawBitmap(bitmap, rotator, paint); 
myParticle.setRotation(90); यहाँ पल में कण आकर्षित करने के लिए मेरे (सरलीकृत) कोड है

इस तरह कैनवास पहले के रूप में निर्देशित रहता है, और आप अनुवाद, स्केलिंग इत्यादि जैसे मैट्रिक्स के साथ और अधिक सामान कर सकते हैं और मैट्रिक्स की सामग्री encapsulat आपके हेरफेर के असली अर्थ है।

संपादित करें: एडी जानना चाहता था कि घूर्णन किस बिंदु पर होता है।

संपादित: AndrewOrobator पता करने के लिए कैनवास गंतव्य coords

+3

इस विधि के साथ स्थिति के लिए आप एक्स और वाई मान कैसे निर्दिष्ट करते हैं? – Eddie

+0

@Eddie: आप 'आप कैसे निर्दिष्ट करते हैं' से क्या मतलब है? – Bondax

+0

मुझे लगता है कि वह उस स्थिति का अर्थ है जिसमें बिटमैप कैनवास –

संबंधित मुद्दे