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

Nhưng văn bản được tạo bởi mã này là "đồng bằng" không phải là chiều và không có bóng bên dưới nó.Cách tạo bóng dưới các từ trên một hình ảnh

Đây là phông chữ phong cách Tôi muốn:

Beautiful characters

Có bất cứ điều gì tôi có thể làm gì để tạo ra phong cách tương tự qua mã của tôi?

Có ai biết cách sử dụng đối tượng SiteMapPath hoặc ResolveURL để chuyển đường dẫn tương đối đến đường dẫn vật lý không? cheers,

+1

[Shadow] (http://msdn.microsoft.com/en-us/library/xeawz664 (v = vs.80) .aspx) - Để tạo bóng , văn bản được vẽ hai lần. Lần đầu tiên nó là màu xám và bù đắp. Lần thứ hai là màu đen. – adatapost

+0

@AVD ý tưởng hay, tôi sẽ thử ngay bây giờ và cho bạn biết kết quả. – Franva

+0

@AVD nhưng làm cách nào để tạo kiểu phông chữ? – Franva

Trả lời

6

Đầu tiên hiển thị bóng bằng cách vẽ văn bản bằng bàn chải tối hơn, tùy chọn mờ ở độ lệch. Sau khi bóng được hiển thị, phủ lên văn bản thông thường.

Ví dụ:

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 để trả lời của bạn. Bạn có bất kỳ ý tưởng về phong cách phông chữ? Ngoài ra, bạn có biết cách sử dụng các đối tượng SiteMapPath hoặc ResolveURL để chuyển một đường dẫn tương đối đến một đối tượng vật lý không? chúc mừng, – Franva

+0

Tôi không biết về kiểu phông chữ. Tôi không nhận ra nó. Nếu bạn muốn giải quyết một URL, tôi chắc chắn có một câu hỏi Stack Overflow chỉ cho điều đó, nhưng nếu bạn không muốn tìm kiếm nó, hãy thử 'Server.MapPath (" ~/path/file.ext ") '. – Dan

+0

cuối cùng, Server.MapPath() là những gì tôi đang tìm kiếm và nó hoạt động. Cảm ơn bạn :) – Franva

Các vấn đề liên quan