2009-09-08 41 views
5

Tôi có chức năng dưới đây để tạo biểu trưng mẫu. Những gì tôi muốn làm là trả lại một png hoặc gif trong suốt thay vì nền trắng. Tôi có thể làm như thế nào?Tạo PNG trong suốt 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); 


} 

đây là kết quả cuối cùng

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

chức năng

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); 

} 

Trả lời

11

Bạn có thể làm một cái gì đó như thế này:

 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); 
Các vấn đề liên quan