2016-10-12 8 views
0

私は2つのビットマップを持っていますが、GraphicsまたはMagick.netを使用すると、目的の効果が得られません。透明なコンポジットビットマップ

グラフィックスは最も近い効果と最速を与えましたが、透明度は台無しに見えます。
Yellow BG Spiral & Astronaut

を作成するには:
enter image description here

しかし、私が手:私は組み合わせたい

using (Graphics gfcs = Graphics.FromImage(spiral)) 
{ 
    Point placement = new Point(19,19); 
    gfcs.DrawImage(astronaut, placement); 
} 


enter image description hereenter image description here
グラフィックス| Magick.net

周辺ソース:

public static void generateGIF() 
    { 
     int smileyID = 71; 
     int goldBorder = 1; 

     List<Bitmap> images = new List<Bitmap>(); 
     Bitmap aura = new Bitmap(Image.FromFile("1511_Player_Aura.png")); 
     Bitmap smilies = new Bitmap(Image.FromFile("1559_items.ItemManager_smiliesBM.png")); 
     Bitmap smiley = new Bitmap(26, 26); 

     for (int y = 0; y < 26; y++) 
     { 
      for (int x = 0; x < 26; x++) 
      { 
       smiley.SetPixel(x, y, smilies.GetPixel(smileyID * 26 + x, goldBorder * 26 + y)); 
      } 
     } 
     int i = 0; 
     for (int j = 9; j < 15; j++) 
     { 
      Bitmap tmp = new Bitmap(64, 64); 
      for (int y = 0; y < 64; y++) 
      { 
       for (int x = 0; x < 64; x++) 
       { 
        tmp.SetPixel(x * zoom, y * zoom, aura.GetPixel(i * 64 + x, j * 64 + y)); 
        using (Graphics gfcs = Graphics.FromImage(tmp)) //this ---v 
        { 
         smiley.PixelFormat = PixelFormat. 
         Point placement = new Point(19, 19); 
         gfcs.DrawImage(smiley, placement); 
        } 
       } 
      } 
      // ^--- should be here 
      images.Add(tmp); 
      tmp.Save($"{j}.png"); 
     } 
     //GIF stuff 
    } 
+0

宇宙飛行士Imageに正しいPixelFormatを使用していることを確認していますか? – Enfyve

+1

ちょっとした注意: 'gfcs.Dispose()'を明示的に呼び出す必要はありません。これはすでに 'using'ブロックの最後に呼び出されます(これは' using'の全体的な点です)。 – itsme86

+0

@ Night5h4d3私はそれに何を使いたいですか? – Skylark

答えて

-1

は、私がイメージに透明度をめちゃくちゃにされたように見えた4096回の宇宙飛行士を書いていました。

public static void generateGIF() 
    { 
     int zoom = 1; 
     int smileyID = 71; 
     int goldBorder = 1; 

     Console.WriteLine("Starting"); 
     List<Bitmap> images = new List<Bitmap>(); 
     Bitmap aura = new Bitmap(Image.FromFile("1511_Player_Aura.png")); 
     Bitmap smilies = new Bitmap(Image.FromFile("1559_items.ItemManager_smiliesBM.png")); 
     Bitmap smiley = new Bitmap(26, 26); 

     using (Graphics gfcs = Graphics.FromImage(smiley)) 
     { 
      Point placement = new Point(smileyID * -26, goldBorder * -26); 
      gfcs.DrawImage(smilies, placement); 
     } 
     int i = 0; 
     for (int j = 9; j < 15; j++) 
     { 
      Bitmap tmp = new Bitmap(64, 64); 
      using (Graphics gfcs = Graphics.FromImage(tmp)) 
      { 
       Point placement = new Point(i * -64, j * -64); 
       gfcs.DrawImage(aura, placement); 
      } 
      using (Graphics gfcs = Graphics.FromImage(tmp)) 
      { 
       Point placement = new Point(19, 19); 
       gfcs.DrawImage(smiley, placement); 
      } 
      images.Add(tmp); 
     } 
     //GIF stuff 
    }