2012-09-25 8 views
5
public static System.Drawing.Image GenerateGiftCard(String text, Font font, Color textColor) 
{ 
    System.Drawing.Image img = Bitmap.FromFile(@"G:\xxx\images\gift-card.jpg"); 
    Graphics drawing = Graphics.FromImage(img); 

    //measure the string to see how big the image needs to be 
    SizeF textSize = drawing.MeasureString(text, font); 

    //create a brush for the text 
    Brush textBrush = new SolidBrush(textColor); 

    float x, y; 

    x = img.Width/2 - textSize.Width/2; 
    y = img.Height/2 - textSize.Height/2; 

    drawing.DrawString(text, font, textBrush, x, y); 

    drawing.Save(); 

    textBrush.Dispose(); 
    drawing.Dispose(); 

    return img; 
} 

लेकिन इस कोड द्वारा उत्पन्न पाठ "सादा" आयाम नहीं है और इसके नीचे कोई छाया नहीं है।छवि पर शब्दों के तहत छाया उत्पन्न करने के लिए

यह फ़ॉन्ट शैली है मैं चाहता हूँ:

Beautiful characters

क्या मैं अपने कोड के माध्यम से एक ही शैली उत्पन्न करने के लिए कर सकते हैं?

क्या किसी को पता है कि साइटमैपपैथ या ResolveURL ऑब्जेक्ट्स का उपयोग किसी भौतिक व्यक्ति के सापेक्ष पथ को स्थानांतरित करने के लिए कैसे किया जाए? चीयर्स,

+1

[छाया] (http://msdn.microsoft.com/en-us/library/xeawz664 (v = vs.80) .aspx) - छाया बनाने के लिए , पाठ दो बार खींचा जाता है। पहली बार यह ग्रे और ऑफ़सेट में है। दूसरी बार काला में है। – adatapost

+0

@ एवीडी अच्छा विचार, मैं इसे अभी आज़माउंगा और आपको परिणाम बता दूंगा। – Franva

+0

@ एवीडी लेकिन फ़ॉन्ट शैली कैसे करें? आपके उत्तर के लिए – Franva

उत्तर

6

पहले ऑफसेट पर एक गहरे, वैकल्पिक रूप से पारदर्शी ब्रश के साथ पाठ को चित्रित करके छाया प्रस्तुत करें। छाया प्रदान करने के बाद, नियमित पाठ ओवरले करें।

उदाहरण:

public static System.Drawing.Image GenerateGiftCard(String text, Font font, Color textColor, Color shadowColor, SizeF shadowOffset) 
{ 
    System.Drawing.Image img = Bitmap.FromFile(@"G:\xxxx\images\gift-card.jpg"); 
    Graphics drawing = Graphics.FromImage(img); 

    //measure the string to see how big the image needs to be 
    SizeF textSize = drawing.MeasureString(text, font); 

    //create a brush for the text 
    Brush shadowBrush = new SolidBrush(shadowColor); // <-- Here 
    Brush textBrush = new SolidBrush(textColor); 

    float x, y; 

    x = img.Width/2 - textSize.Width/2; 
    y = img.Height/2 - textSize.Height/2; 

    drawing.DrawString(text, font, shadowBrush, x + shadowOffset.Width, y + shadowOffset.Height); // <-- Here 
    drawing.DrawString(text, font, textBrush, x, y); 

    drawing.Save(); 

    textBrush.Dispose(); 
    drawing.Dispose(); 

    return img; 
} 
+0

thx। क्या आपको फ़ॉन्ट शैली के बारे में कोई जानकारी है? इसके अलावा, क्या आप जानते हैं कि साइटमैपपैथ या ResolveURL ऑब्जेक्ट्स का उपयोग किसी भौतिक व्यक्ति के सापेक्ष पथ को स्थानांतरित करने के लिए कैसे करें? चीयर्स, – Franva

+0

मुझे फ़ॉन्ट शैली के बारे में पता नहीं है। मैं इसे पहचान नहीं पा रहा हूं। यदि आप किसी यूआरएल को हल करना चाहते हैं, तो मुझे यकीन है कि इसके लिए एक स्टैक ओवरफ़्लो प्रश्न है, लेकिन यदि आप इसे देखना नहीं चाहते हैं, तो 'सर्वर.मैपपाथ ("~/path/file.ext") आज़माएं '। – Dan

+0

आखिरकार, Server.MapPath() वह है जिसे मैं ढूंढ रहा था और यह काम करता है। बहुत - बहुत धन्यवाद :) – Franva

संबंधित मुद्दे