Как мне наложить одно растровое изображение на другое в GDI +? - PullRequest
4 голосов
/ 03 июня 2010

Используя GDI +, я создал тепловую карту bmp, и я хотел бы наложить ее поверх моей карты bmp. Я сохранил два bmp на диск, и они выглядят хорошо, мне просто нужен способ собрать их вместе. Есть ли способ сделать это, возможно, с помощью объекта Graphics? Как прозрачность / Альпа вовлечены?

Я очень новичок в программировании GDI, поэтому, пожалуйста, будьте как можно точнее.


ОК - вот ответ. В какой-то момент мне нужно узнать, как работает GDI + ...

Я не мог обойти проблемы с прозрачностью, но это работает. Он просто копирует небелые пиксели с наложения на карту:

        for (int x = 0; x < map.Width; x++)
            for (int y = 0; y < map.Height; y++) {
                Color c = overlay.GetPixel(x, y);
                if ((c.A != 255) || (c.B != 255) || (c.G != 255) || (c.R != 255))
                    map.SetPixel(x, y, c);     

1 Ответ

7 голосов
/ 03 июня 2010

Это должно сделать работу ...

В настоящий момент изображение, которое вы хотите наложить на основное изображение, будет находиться в верхнем левом углу основного изображения, следовательно, new Point(0,0). Однако вы можете изменить это, чтобы найти изображение в любом месте.

void SuperimposeImage()
        {
            //load both images
            Image mainImage = Bitmap.FromFile("PathOfImageGoesHere");
            Image imposeImage = Bitmap.FromFile("PathOfImageGoesHere");

            //create graphics from main image
            using (Graphics g = Graphics.FromImage(mainImage))
            {
                //draw other image on top of main Image
                g.DrawImage(imposeImage, new Point(0, 0));

                //save new image
                mainImage.Save("OutputFileName");
            }


        }
...