2012-07-23 15 views
6

मेरे पास एक कस्टम व्यू है और मैं अपने कैनवास पर आकर्षित करने के लिए ऑन ड्रा() का उपयोग कर रहा हूं। मैं इस कैनवास पर एक छवि खींच रहा हूँ।छवि किनारे या ऊपर की ओर कैसे बारी करें?

मैं एक संदर्भ के रूप में एक क्षैतिज रेखा पर फ्लिप की तरह छवि को उल्टा करना चाहता हूं। यह छवि 180 डिग्री या -180 डिग्री से घूर्णन के समान नहीं है।

इसी तरह, मैं सिडवे को मिरर या फ़्लिप करना चाहता हूं यानी एक लंबवत रेखा के साथ यह पिवट या संदर्भ है। फिर यह कैनवास.रोटेट() प्रदान करता है जैसा ही नहीं है।

मुझे आश्चर्य है कि यह कैसे करना है। क्या मुझे मैट्रिक्स का उपयोग करना चाहिए या कैनवास इसे "घुमाने" की तरह करने के लिए कोई विधि प्रदान करता है।

धन्यवाद।

उत्तर

23

आप इसे सीधे कैनवास के साथ नहीं कर सकते हैं। इसे चित्रित करने से पहले आपको वास्तव में बिटमैप (मैट्रिक्स का उपयोग करके) को संशोधित करने की आवश्यकता होगी।

public enum Direction { VERTICAL, HORIZONTAL }; 

/** 
    Creates a new bitmap by flipping the specified bitmap 
    vertically or horizontally. 
    @param src  Bitmap to flip 
    @param type  Flip direction (horizontal or vertical) 
    @return   New bitmap created by flipping the given one 
         vertically or horizontally as specified by 
         the <code>type</code> parameter or 
         the original bitmap if an unknown type 
         is specified. 
**/ 
public static Bitmap flip(Bitmap src, Direction type) { 
    Matrix matrix = new Matrix(); 

    if(type == Direction.VERTICAL) { 
     matrix.preScale(1.0f, -1.0f); 
    } 
    else if(type == Direction.HORIZONTAL) { 
     matrix.preScale(-1.0f, 1.0f); 
    } else { 
     return src; 
    } 

    return Bitmap.createBitmap(src, 0, 0, src.getWidth(), src.getHeight(), matrix, true); 
} 
+0

धन्यवाद @ aleks-जी कोड स्निपेट के लिए –

+0

धन्यवाद: सौभाग्य से, यह यह करने के लिए एक बहुत ही सरल कोड है। जहां मैं एक फ्लिप की गई छवि चाहता था और setImageResource का उपयोग कर रहा था, मैंने बस इसके साथ प्रतिस्थापित किया: imageView.setImageBitmap (फ्लिप (बिटमैपफ़ैक्टरी.decodeResource (getResources(), R.id.someimage), दिशा। हॉरिज़ोनल)); –

+1

मुझे पता है कि यह बहुत पुराना है, लेकिन यह सिर्फ मेरे बेकन को बचाया। धन्यवाद! – LokiSinclair

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