2012-12-12 26 views
6

में लेबल टेक्स्ट स्केल-सक्षम कैसे कर सकता हूं, मैं पूरे लेबल कंटेनर में फिट करने के लिए लेबल स्केल करने में सक्षम बनाने का एक तरीका ढूंढ रहा हूं। जिस तरह से मैं सोच सकता हूं कि खिड़की के आकार में कंटेनर आकार प्राप्त करना है और उसके बाद फ़ॉन्ट आकार को बढ़ाएं या घटाएं, लेकिन इससे इसकी संभावनाएं सीमित हो जाएंगी।मैं विनफॉर्म एप्लिकेशन

यह सोचने का बेहतर तरीका है कि यह Winforms एप्लिकेशन में एंकर संपत्ति की तरह काम कर सकता है।

उत्तर

4

मुझे पता था कि उत्तर ग्राफिक ऑब्जेक्ट और पेंट इवेंट में कहीं छिपा हुआ है, इन 2 कीवर्ड के साथ खेलने से मेरी समस्या हल हो गई है। यहां वह समाधान है जो मेरे विशेष मामले में काम करता है।

मैं बस अपना लेबल के लिए रंग घटना पर फ़ॉन्ट आकार बदल रहा हूँ इस प्रकार है:

private void myLabel_Paint(object sender, PaintEventArgs e) 
{ 
    float fontSize = NewFontSize(e.Graphics, parentContainer.Bounds.Size, myLabel.Font, myLabel.Text); 
    Font f = new Font("Arial", fontSize, FontStyle.Bold); 
    myLabel.Font = f; 
} 

कहाँ NewFontSize समारोह इस तरह दिखता है:

public static float NewFontSize(Graphics graphics, Size size, Font font, string str) 
{ 
    SizeF stringSize = graphics.MeasureString(str, font); 
    float wRatio = size.Width/stringSize.Width; 
    float hRatio = size.Height/stringSize.Height; 
    float ratio = Math.Min(hRatio, wRatio); 
    return font.Size * ratio; 
} 

मैं भी इस लेख उपयोगी पाया http://www.switchonthecode.com/tutorials/csharp-tutorial-font-scaling

+0

बहुत अच्छी तरह से काम करता है! धन्यवाद। – nozzleman

+1

पेरेंटकंटनर क्या है ??? क्या आप पूर्ण कोड के साथ एक यूआरएल भेज सकते हैं? धन्यवाद! – Xarialon