Android
रंग
खोज…
परिचय
एक कैनवस (ड्रॉइंग कॉल), एक बिटमैप (पिक्सेल धारण), और एक ड्रॉइंग आदिम (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) उपयोग करें, आपके पास होगा