2009-09-08 6 views
5

J'ai ci-dessous la fonction pour générer un exemple de logo. Ce que je veux faire est de retourner un png transparent ou un gif au lieu de fond blanc. Comment puis-je le faire?Générer PNG transparent C#

private Bitmap CreateLogo(string subdomain) 
{ 

    Bitmap objBmpImage = new Bitmap(1, 1); 
    int intWidth = 0; 
    int intHeight = 0; 
    Font objFont = new Font("Arial", 13, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Pixel); 
    Graphics objGraphics = Graphics.FromImage(objBmpImage); 
    intWidth = (int)objGraphics.MeasureString(subdomain, objFont).Width; 
    intHeight = (int)objGraphics.MeasureString(subdomain, objFont).Height; 
    objBmpImage = new Bitmap(objBmpImage, new Size(intWidth, intHeight)); 
    objGraphics = Graphics.FromImage(objBmpImage); 
    objGraphics.Clear(Color.White); 
    objGraphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; 
    objGraphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias; 
    objGraphics.DrawString(subdomain, objFont, new SolidBrush(Color.FromArgb(102, 102, 102)), 0, 0); 
    objGraphics.Flush(); 
    return (objBmpImage); 


} 

ici est le résultat final

context.Response.ContentType = "image/png"; 
      using (MemoryStream memStream = new MemoryStream()) 
      { 
       CreateLogo(_subdname).Save(memStream, ImageFormat.Png); 
       memStream.WriteTo(context.Response.OutputStream); 
      } 
fonction

private Bitmap CreateLogo(string subdomain) 
{ 

    Bitmap objBmpImage = new Bitmap(1, 1); 
    int intWidth = 0; 
    int intHeight = 0; 
    Font objFont = new Font("Arial", 13, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Pixel); 
    Graphics objGraphics = Graphics.FromImage(objBmpImage); 
    intWidth = (int)objGraphics.MeasureString(subdomain, objFont).Width; 
    intHeight = (int)objGraphics.MeasureString(subdomain, objFont).Height; 
    objBmpImage = new Bitmap(objBmpImage, new Size(intWidth, intHeight)); 
    objGraphics = Graphics.FromImage(objBmpImage); 
    objGraphics.Clear(Color.Transparent); 
    objGraphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; 
    objGraphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias; 
    objGraphics.DrawString(subdomain, objFont, new SolidBrush(Color.FromArgb(255, 255, 255)), 0, 0); 
    objGraphics.Flush(); 
    return (objBmpImage); 

} 

Répondre

11

Vous pouvez faire quelque chose comme ceci:

 Bitmap bmp = new Bitmap(300, 300); 
     Graphics g = Graphics.FromImage(bmp); 

     g.Clear(Color.Transparent); 
     g.FillRectangle(Brushes.Red, 100, 100, 100, 100); 

     g.Flush(); 
     bmp.Save("test.png", System.Drawing.Imaging.ImageFormat.Png);