2012-09-25 14 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; 
} 

Ancak bu kodun oluşturduğu metin "düz" boyutsuzdur ve altındaki gölge değildir. Benim koduyla aynı stil oluşturmak için yapabileceğim bir şeyBir resmin üzerinde kelimeler altında gölge nasıl oluşturulur?

Beautiful characters

var mı:

Bu istediğim yazı tarzı mı?

SiteMapPath veya ResolveURL nesnelerini, göreli yolu fiziksel olana aktarmak için nasıl kullanacağını bilen var mı? cheers,

+1

[Gölge] (http://msdn.microsoft.com/en-us/library/xeawz664 (v = vs.80) .aspx) - gölge oluşturmak için Metin iki kez çizilir. İlk kez gri ve ofset. İkinci kez siyah. – adatapost

+0

@AVD iyi bir fikir, şimdi deneyeceğim ve sonucu size bildiririm. – Franva

+0

@AVD ancak yazı tipi stili nasıl yapılır? Cevabınız için – Franva

cevap

6

İlk önce, metni bir ofsette koyu, isteğe bağlı olarak yarı saydam bir fırça ile çizerek gölgeyi oluşturun. Gölge oluşturulduktan sonra normal metni kaplar.

Örnek:

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. Yazı tipi stili hakkında bir fikrin var mı? Ayrıca, bir göreli yolu fiziksel bir dosyaya aktarmak için SiteMapPath veya ResolveURL nesnelerini nasıl kullanacağınızı biliyor musunuz? şerefe, – Franva

+0

Yazı tipi stilini bilmiyorum. Ben onu tanımıyorum. Bir URL'yi çözmek istiyorsanız, bunun için yalnızca bir Yığın Taşması sorusu olduğundan eminim, ancak bakmak istemiyorsanız, “Server.MapPath (" ~/path/file.ext ") dosyasını deneyin. '. Son olarak, – Dan

+0

, Server.MapPath() aradığım şey ve çalışıyor. Büyük bir teşekkür ederim :) – Franva

İlgili konular