Como escrever um texto numa imagem usando C#

Ao final do dotNETday eu disse aos participantes que poderíamos emitir um certificado de participação nas palestras. Só que recebemos mais de 300 pedidos. Isso complicou um pouco a "dinâmica da coisa"...

A solução foi eu criar uma classe que pode printar o texto desejado em cima de uma imagem base, com o fundo do mesmo.

Agora é só colocar numa página ASP.Net, onde o usuário preencha os seus dados e crie dinamicamente o certificado.



using System;

namespace 
Certificado
{
    
class Program
    {
        
static void Main(string[] args)
        {
            
new Core().CriarCertificado("Beta Ray Bill"
                
"Participou do evento online dotNETday - parte 1"
                
"com duração de 12 horas, no dia 03/04/10, às 09:00h"
                
"Abertura (Luciano Palma)"
                
"O que há de novo no Visual Studio 2010 (Djonatas Tenfen)"
                
"O que há de novo no .NET Framework 4 (Rogério Prudente)"
                
"O que há de novo no C# 4 e no Visual Basic 10 (Agnaldo Diogo dos Santos)");

            
System.Diagnostics.Process.Start(Environment.CurrentDirectory);
        
}
    }
}
using System;

using 
System.Drawing;

namespace 
Certificado
{
    
public class Core
    {
        
private String nomeImagem "certificado.png";

        public 
Image GetImage()
        {
            Image imagem 
= null;

            try
            
{
                imagem 
Image.FromFile(this.nomeImagem);
            
}
            
catch { }

            
return imagem;
        
}

        
public void CriarCertificado(String nome,
            String linha1, String linha2, String linha3,
            String linha4, String linha5, String linha6)
        {
            Image imagem 
= this.GetImage();

            if 
(imagem != null)
            {
                
using (Graphics grafico Graphics.FromImage(imagem))
                {
                    Brush pincel 
= new SolidBrush(Color.Black);

                    
Font fonteNome = new Font("Courier New"36,
                        FontStyle.Bold | FontStyle.Italic)
;

                    
Font fonteEvento = new Font("Courier New"24,
                        FontStyle.Bold | FontStyle.Italic)
;
                    
Font fontePalestras = new Font("Courier New"12,
                        FontStyle.Bold | FontStyle.Italic)
;

                    
grafico.DrawString(nome, fonteNome, pincel, 2001000);
                    
grafico.DrawString(linha1, fonteEvento, pincel, 2001400);
                    
grafico.DrawString(linha2, fonteEvento, pincel, 2001600);
                    
grafico.DrawString(linha3, fontePalestras, pincel, 12002000);
                    
grafico.DrawString(linha4, fontePalestras, pincel, 12002050);
                    
grafico.DrawString(linha5, fontePalestras, pincel, 12002100);
                    
grafico.DrawString(linha6, fontePalestras, pincel, 12002150);
                
}

                imagem.Save(nome + 
" - " this.nomeImagem);
            
}
        }
    }
}

Comentários (1) -

Rafael Gustavo Gali
Rafael Gustavo Gali
07/04/2010 09:12:14 #

Muito bom!!!

Comentar

  Country flag

biuquote
  • Comentário
  • Pré-visualização
Loading