खोज…


परिचय

एक कैनवस (ड्रॉइंग कॉल), एक बिटमैप (पिक्सेल धारण), और एक ड्रॉइंग आदिम (Rect, Path, Bitmap ...) के साथ-साथ एक पेंट को खींचने के लिए आवश्यक चार वस्तुओं में से एक है।

एक पेंट बनाना

आप इन 3 कंस्ट्रक्टरों में से एक के साथ एक नया पेंट बना सकते हैं:

  • new Paint() डिफ़ॉल्ट सेटिंग्स के साथ बनाएँ
  • new Paint(int flags) झंडे के साथ बनाएँ
  • new Paint(Paint from) दूसरे पेंट से सेटिंग कॉपी करें

आमतौर पर यह सुझाव दिया जाता है कि पेंट ऑब्जेक्ट, या ऑनड्रॉ () में किसी भी अन्य ऑब्जेक्ट को कभी न बनाएं क्योंकि यह प्रदर्शन के मुद्दों को जन्म दे सकता है। (एंड्रॉइड स्टूडियो शायद आपको चेतावनी देगा) इसके बजाय, इसे वैश्विक बनाएं और इसे अपने क्लास कंस्ट्रक्टर में आरंभ करें जैसे:

public class CustomView extends View {
    
    private Paint paint;
    
    public CustomView(Context context) {
        super(context);
        paint = new Paint();
        //...
    }
    
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        paint.setColor(0xFF000000);
        // ...
    }
}

टेक्स्ट के लिए पेंट सेट करना

पाठ ड्राइंग सेटिंग्स

  • setTypeface(Typeface typeface) फ़ॉन्ट चेहरा सेट करें। टाइपफेस देखें
  • setTextSize(int size) फ़ॉन्ट आकार, पिक्सेल में सेट करें।
  • setColor(int color) टेक्स्ट ड्राइंग सहित पेंट ड्राइंग कलर सेट करें। आप setARGB(int a, int r, int g, int b और setAlpha(int alpha) भी उपयोग कर सकते हैं
  • setLetterSpacing(float size) वर्णों के बीच रिक्त स्थान, ईएमएस में सेट करें। डिफ़ॉल्ट मान 0 है, एक नकारात्मक मान पाठ को कस देगा, जबकि एक सकारात्मक इसका विस्तार करेगा।
  • setTextAlign(Paint.Align align) अपने मूल के सापेक्ष पाठ संरेखण सेट करें। Paint.Align.LEFT इसे मूल के दाईं ओर Paint.Align.LEFT , RIGHT इसे बाईं ओर आकर्षित करेगी, और CENTER इसे मूल (क्षैतिज) पर केन्द्रित करेगा
  • setTextSkewX(float skewX) इसे नकली इटैलिक माना जा सकता है। SkewX पाठ तल के क्षैतिज ऑफसेट का प्रतिनिधित्व करता है। (इटैलिक के लिए -0.25 का उपयोग करें)
  • setStyle(Paint.Style style) टेक्स्ट फिल FILL , स्ट्रोक टेक्स्ट STROKE , या दोनों FILL_AND_STROKE

ध्यान दें कि आप TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, size, getResources().getDisplayMetrics()) या DP से पिक्सेल में परिवर्तित करने के लिए TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, size, getResources().getDisplayMetrics()) का उपयोग कर सकते हैं।

मापने का पाठ

  • float width = paint.measureText(String text) की चौड़ाई को मापें
  • float height = paint.ascent() पाठ की ऊँचाई को मापें
  • paint.getTextBounds(String text, int start, int end, Rect bounds पाठ आयामों को paint.getTextBounds(String text, int start, int end, Rect bounds । आपने Rect आवंटित किया है, यह रिक्त नहीं हो सकता है:
 String text = "Hello world!";
 Rect bounds = new Rect();
 paint.getTextBounds(text, 0, text.length(), bounds);

मापने के लिए अन्य तरीके हैं, हालांकि इन तीनों को अधिकांश उद्देश्यों के लिए फिट होना चाहिए।

ड्राइंग आकृतियों के लिए पेंट की स्थापना

  • setStyle(Paint.Style style) भरा आकार FILL , स्ट्रोक आकार STROKE , या दोनों FILL_AND_STROKE
  • setColor(int color) पेंट ड्राइंग कलर सेट करें। आप setARGB(int a, int r, int g, int b और setAlpha(int alpha) भी उपयोग कर सकते हैं
  • setStrokeCap(Paint.Cap cap) सेट लाइन टोपियां, या तो ROUND , SQUARE , या BUTT (कोई नहीं) देखें इस
  • setStrokeJoin(Paint.Join join) सेट लाइन मिलती है, या तो MITER (नुकीले), ROUND , या BEVEL । देखें इस
  • setStrokeMiter(float miter) सेट setStrokeMiter(float miter) सीमा में शामिल होता है। यह मैटर को अनिश्चित काल तक चलने से रोक सकता है, x पिक्सेल के बाद इसे बेवेल जॉइन में बदल सकता है। देखें इस
  • setStrokeWidth(float width) स्ट्रोक चौड़ाई सेट करें। 0 हेयरलाइन मोड में, कैनवास मैट्रिक्स के स्वतंत्र रूप से आकर्षित करेगा। (हमेशा 1 पिक्सेल)

झंडे लगाना

आप कंस्ट्रक्टर में निम्न झंडे सेट कर सकते हैं, या setFlags(int flags)

  • Paint.ANTI_ALIAS_FLAG एंटीएलियासिंग सक्षम करें, ड्राइंग को सुचारू करें।
  • Paint.DITHER_FLAG सक्षम करें। यदि रंग सटीकता डिवाइस की तुलना में अधिक है, तो यह होगा
  • Paint.EMBEDDED_BITMAP_TEXT_FLAG बिटमैप फ़ॉन्ट का उपयोग करने में सक्षम करता है।
  • Paint.FAKE_BOLD_TEXT_FLAG एक नकली बोल्ड प्रभाव के साथ पाठ आकर्षित करेगा, बोल्ड टाइपफेस का उपयोग करने के बजाय इसका उपयोग किया जा सकता है। कुछ फोंट ने बोल्ड, नकली बोल्ड स्टाइल नहीं किया है
  • Paint.FILTER_BITMAP_FLAG रूपांतरित होने पर बिटमैप के नमूने को प्रभावित करता है।
  • Paint.HINTING_OFF , Paint.HINTING_ON टॉगल फ़ॉन्ट संकेत, यह देखें
  • Paint.LINEAR_TEXT_FLAG फ़ॉन्ट स्केलिंग को अक्षम करता है, ड्रॉ संचालन को इसके बजाय स्केल किया जाता है
  • Paint.SUBPIXEL_TEXT_FLAG पाठ की गणना उप-सटीकता का उपयोग करके की जाएगी।
  • Paint.STRIKE_THRU_TEXT_FLAG पाठ खींचा जाएगा
  • Paint.UNDERLINE_TEXT_FLAG पाठ को रेखांकित किया जाएगा

आप एक ध्वज जोड़ सकते हैं और इस तरह झंडे हटा सकते हैं:

Paint paint = new Paint();
paint.setFlags(paint.getFlags() | Paint.FLAG);   // Add flag
paint.setFlags(paint.getFlags() & ~Paint.FLAG);  // Remove flag

एक ध्वज को हटाने की कोशिश करना जो वहां नहीं है या एक ध्वज जोड़ना जो पहले से ही है, कुछ भी नहीं बदलेगा। यह भी ध्यान दें कि ज्यादातर झंडे set<Flag>(boolean enabled) का उपयोग करके भी सेट किए जा सकते हैं, उदाहरण के लिए setAntialias(true)

आप पेंट को अपनी डिफ़ॉल्ट सेटिंग्स पर रीसेट करने के लिए paint.reset() का उपयोग कर सकते हैं। एकमात्र डिफ़ॉल्ट ध्वज EMBEDDED_BITMAP_TEXT_FLAG । यह सेट किया जाएगा भले ही आप new Paint(0) उपयोग करें, आपके पास होगा



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow