पर मापने वाले पाठ को मैं पाठ मापने और स्केल किए गए कैनवास के साथ संघर्ष कर रहा हूं।स्केल किए गए कैनवास
जब कैनवास अनसुलझा हो जाता है, getTextBounds और माप टेक्स्ट सटीक परिणाम प्रदान करते हैं। हालांकि, जब कैनवास को स्केल किया जाता है तो दोनों विधियां मुद्रित पाठ के वास्तविक आकार से मेल खाने वाले परिणाम नहीं देती हैं।
मैं निम्नलिखित OnDraw विधि के साथ दृश्य का एक उपवर्ग बना लिया है परीक्षण के लिए: स्केलिंग = 0.5 मैं निम्नलिखित उत्पादन प्राप्त करने के लिए
final float scaling = 0.51f;
final int fontSize = 50;
canvas.scale(scaling, scaling);
font = Typeface.create("Arial", Typeface.NORMAL);
Paint paint = new Paint();
paint.setColor(0xff4444ff);
paint.setTypeface(font);
paint.setTextSize(fontSize);
paint.setAntiAlias(true);
int x = 10;
int y = 100;
final String text = "Lorem ipsum dolor sit amet, consectetur adipisici elit...";
canvas.drawText(text, x, y, paint);
// draw border using getTextBounds
paint.setColor(0xffff0000);
paint.setStyle(Paint.Style.STROKE);
paint.setTypeface(font);
paint.setTextSize(fontSize);
Rect bounds = new Rect();
paint.getTextBounds(text, 0, text.length(), bounds);
bounds.offset(x, y);
paint.setColor(0x80ffff00);
canvas.drawRect(bounds, paint);
// draw border using measureText
float w = paint.measureText(text);
bounds.left = x;
bounds.right = (int) Math.ceil(bounds.left + w);
bounds.top -= 10;
bounds.bottom += 10;
paint.setColor(0x8000ffff);
paint.setPathEffect(new DashPathEffect(new float[] { 10, 10 }, 0));
canvas.drawRect(bounds, paint);
: स्केलिंग के लिए
= 0,51 निम्न परिणाम दिखाया गया है:
पीले ठोस सीमा गेटटेक्स्टबाउंड से प्राप्त आय को चिह्नित करती है, धराशायी सायन रेक्ट चौड़ाई वाले फ्रेम का उपयोग करके प्रस्तुत किया जाता है। ओम माप पाठ।
जैसा कि आप देख सकते हैं, स्केलिंग = 0.5 वाला टेक्स्ट मापित आयामों से छोटा है और स्केलिंग = 0.51 के साथ खींचा गया पाठ मापा आयाम से बड़ा तरीका है।
किसी भी मदद की सराहना की जाती है!
आप कर रहे हैं सुधार, हमेशा लागू किया जाता है और कैनवास में एक स्केलिंग मूल्य भरपाई नहीं हो पाती नहीं? मैं वास्तव में नहीं सोचता कि बाध्यकारी आय की गणना गलत है, लेकिन फ़ॉन्ट प्रतिपादन कोड कैनवास स्केलिंग के अनुसार उचित फ़ॉन्ट आकार नहीं चुनता है ... –
हां, यह हमेशा गणना की जाती है कि स्केलिंग के बिना टेक्स्ट आयामों की आवश्यकता होती है कैनवास। –
इसका उल्लेख करना भूल गया है इसका उपयोग ज्यादातर कैनवास में पाठ की स्थिति के लिए किया जाता है, सटीक आयामों और स्थिति को जानना आवश्यक है। –