2011-11-08 1 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