2016-11-24 80 views
0

我正在使用Mono 4.6.1,使用System.Drawing我想疊加這兩個圖像(imgur album)。但是最終的結果看起來像this,第一張圖像略帶白色。在渲染之前設置背景顏色顯示cardBack圖像的透明部分未正確混合。Mono System.Drawing,透明像素變成半灰色

 const int width = 764; 
     const float s = width/764; 

     var cardBack = new Bitmap(@"assets/mHunter.png"); 
     var cardArt = new Bitmap(@"CardArt/Full/AT_007.png"); 


     using (var bmp = new Bitmap(cardBack.Width, cardBack.Height, PixelFormat.Format32bppArgb)) 
     using (var gr = Graphics.FromImage(bmp)) { 

      //Draw card art clipped by type 
      var clippingRegion = CreateEllipseRegion(s); 
      //gr.SetClip(clippingRegion); 
      //ctx.drawImage(t, 0, 0, t.width, t.height, 100 * s, 75 * s, 590 * s, 590 * s); 
      gr.DrawImage(cardArt, 100 * s, 75 * s, 590 * s, 590 * s); 
      //gr.ResetClip(); 

      gr.DrawImage(cardBack,0, 0); 

      bmp.Save("/tmp/result.png", ImageFormat.Png); 
     } 
+0

這是預期的。由於您在背景中施加的圖像似乎沒有使用任何透明度鍵。這不是mono或gdi +的問題,而是圖像可能過多的問題。 – MrPaulch

+0

因此,我必須用熱粉紅色的東西代替透明部件,並將其設置爲透明? – Lett1

+0

Eighther(查看Bitmap.MakeTranspatent)或使用Alpha混合 – MrPaulch

回答

0

事實證明,所述cardBack圖像使用索引顏色模式,改變它使用GIMP爲RGB之後,現在正確的共混物。