2013-01-12 12 views
9

उस पाठ को लंबवत रूप से कैसे लिखा गया था? पाठ 90 डिग्री घुमाने के लिए कैसे? व्यक्तिगत रूप से प्रत्येक पत्र लिखें बेवकूफ है, लेकिन अब, मुझे एक और तरीका पता नहीं है। (अन्यथा सब कुछ आप आकर्षित घुमाया हो जाता है बाद में इसे वापस घुमाया जाता है,) rotate() विधि का उपयोग करें कैनवास बारी बारी से करने:कैनवास ड्राटेक्स्ट दिशा

Paint paint = new Paint(); 
public DrawView(Context context, double arr[]) 
{ 
    super(context); 
    paint.setColor(Color.BLACK); 
} 
    @Override 
    public void onDraw(Canvas canvas) 
    { 
     canvas.drawText("Test",50, 50, paint); 
    } 
+0

आपका प्रश्न कुछ हद तक स्पष्ट नहीं है: आप पूरा पाठ बारी बारी से करना चाहते हैं (ताकि आप इसे पढ़ने के लिए 'अपना सिर घुमाने' करने के लिए है), या आप एक दूसरे के नीचे वर्ण हो करना चाहते हैं (और घुमाया नहीं)? – Veger

+0

मुझे दोनों विकल्पों में दिलचस्पी है –

उत्तर

28

आप पाठ (या कुछ और) घूर्णन आसान है

canvas.save(); 
canvas.rotate(90f, 50, 50); 
canvas.drawText("Text",50, 50, paint); 
canvas.restore(); 

save() और restore() विधियों क्रमशः कैनवास की स्थिति को बचाने और इसे बहाल करने के लिए। तो आपके बाकी खींचे गए तत्व घुमाए नहीं जाते हैं। यदि आप केवल पाठ को पेंट करना चाहते हैं तो इन दो विधियों को जरूरी नहीं है।

यदि आप एक दूसरे के नीचे स्ट्रिंग के पात्र रखना चाहते हैं, तो आपको प्रत्येक वर्ण को अलग से संसाधित करने की आवश्यकता है। सबसे पहले आपको फ़ॉन्ट ऊंचाई प्राप्त करने की आवश्यकता होगी और प्रत्येक चरित्र को चित्रित करने के लिए आपको इस ऊंचाई के साथ वाई-समन्वय को बढ़ाने के लिए आवश्यकता होगी।

int y = 50; 
int fontHeight = 12; // I am (currently) too lazy to properly request the fontHeight and it does not matter for this example :P 
for(char c: "Text".toCharArray()) { 
    canvas.drawText(c, 50, y, paint); 
    y += fontHeight; 
} 
+0

धन्यवाद !! सब काम कर रहे हैं, लेकिन इसके बजाय canvas.store() मैं canvas.save लिखता हूं() –

+0

आपका स्वागत है, मैंने अपना जवाब अपडेट किया है, इसलिए यह 'save() 'का उपयोग करता है! – Veger

+0

उपयोगी उत्तर के लिए धन्यवाद! – myforums

0

सही संस्करण है: कैनवास canvas_front = नया कैनवास (bitmap_front);

Paint paint = new Paint(); 
    paint.setColor(Color.rgb(140, 0, 0)); 
    paint.setAlpha(80); 
    paint.setStrokeWidth(2); 

canvas_front.drawLine (0, (नाव) (frontIV.getHeight() * 0.9), frontIV.getWidth(), (नाव) (frontIV.getHeight() * 0.9), रंग);

canvas_front.save(); 
    canvas_front.rotate((float) 90 , 50, 50); 
    canvas_front.drawText("Text",50, 50, paint); 
    canvas_front.restore(); 
    frontIV.setImageBitmap(bitmap_front);