2011-11-08 22 views
1

我想在純色位圖上用透明度平鋪一個png。平面png與位圖頂部的c#

到目前爲止我有此

using (System.Drawing.Image backImage = System.Drawing.Image.FromFile(layer1imagename)) 

    using (System.Drawing.Image frontImage = System.Drawing.Image.FromFile(HttpContext.Current.Server.MapPath("~/") + layer2)) 

    using (Image IMG1 = new Bitmap(251, 400)) 
    using (Graphics compositeGraphics = Graphics.FromImage(IMG1)) 
    { 
     compositeGraphics.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy; 
     compositeGraphics.DrawImageUnscaled(backImage, 0, 0); 
     compositeGraphics.DrawImageUnscaled(frontImage, 0, 0); 
     compositeGraphics.Dispose(); 
     frontImage.Dispose(); 
     backImage.Dispose(); 
     IMG1.Save(layer1imagename, System.Drawing.Imaging.ImageFormat.Png); 
    } 

然而這原來除去頂層的透明度。我如何保留頂部的透明PNG?

回答

2

變更using (Image IMG1 = new Bitmap(251, 400))變爲using (Image IMG1 = new Bitmap(251, 400, PixelFormat.Format32bppArgb))

爲MSDN的引用,請參閱:

編輯 - 按評論:

要畫你想你需要使用一個不同的CompositingMode - SourceOver instead of SourceCopy的PNG。

+0

這似乎拯救了PNG,但你不能通過它看到背景顏色? – user987723

+0

@ user987723看到我的編輯上面... – Yahia

+0

你真了不起!多謝,夥計 – user987723