2016-11-24 6 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

Во-вторых, что (посмотрите Bitmap.MakeTranspatent) или используйте Alpha Blending – MrPaulch

ответ

0

Оказывается, что изображения cardBack использует режим индексированных цветов, после изменения его RGB с помощью GIMP, теперь он смешивает правильно.