如何从两个创建一个图像?

时间:2013-09-18 16:28:37

标签: c# winforms

我想创建两个将并排的新图像。 如果我有4张图像,那么制作内部有4张图像的新图像。 不是一个在另一个上,而是两个图像一个靠近另一个,或者如果它是4个图像,所以也是一个靠近另一个图像。

到目前为止我所做的是从两个像素中取出像素:

private void GetPixels(string File1, string File2)
        {
            Bitmap bmp1 = new Bitmap(File1);
            Bitmap bmp2 = new Bitmap(File2);

            for (int i = 0; i < bmp1.Width; i++)
            {
                for (int j = 0; j < bmp1.Height; j++)
                {
                    Color pixel = bmp1.GetPixel(i, j);
                }
            }
            for (int x = 0; x < bmp2.Width; x++)
            {
                for (int y = 0; y < bmp2.Height; y++)
                {
                    Color pixel = bmp1.GetPixel(x, y);
                }
            }
        }

我想创建一个新的位图,以某种方式它的大小将很大,以存储其他两个位图。 如何计算新位图的正确大小,以便它包含其他两个位图?

如何将像素添加到新位图?

编辑**

将它添加到命名空间下的Form1的顶层并且确定。 现在我试着像这样使用它:

private void CreateNewImage()
        {
            for (int i = 0; i < imagesRainUrls.Count; i++)
            {
                //Use it
                //Double the same image
                Bitmap doubledBitmap =  imagesRainUrls[i].DoubleBitmap();
                //Append new image
                Bitmap appendedBitmap = imagesRainUrls.AppendBitmap(imagesSatelliteUrls[i]);
            }
        }

imagesRainUrls是图像列表,还有imagesSatelliteUrls是图像列表。

我得到的错误:

错误1'字符串'不包含'DoubleBitmap'的定义,最好的扩展方法重载'DownloadImages.BitmapExtensions.DoubleBitmap(System.Drawing.Bitmap)'有一些无效的参数

错误2实例参数:无法从'string'转换为'System.Drawing.Bitmap'

错误3'System.Collections.Generic.List'不包含'AppendBitmap'的定义和最佳扩展方法重载'DownloadImages.BitmapExtensions.AppendBitmap(System.Drawing.Bitmap,System.Drawing.Bitmap)'一些无效的论点

错误4实例参数:无法从'System.Collections.Generic.List'转换为'System.Drawing.Bitmap'

错误5参数2:无法从'string'转换为'System.Drawing.Bitmap'

此外,我在imagesRainUrls列表中有更多图像,然后是SatelliteUrls列表,那么我怎样才能将两个图像合并,直到SatelliteUrls图像的数量? 雨图像我有62,卫星只有9 在这个过程的最后,我将从合并的所有GIF和未合并的GIF制作动画gif。因此,动画将是一个gif,前9个图像合并,其余的Rain将不会合并但是相同的动画。

那么我如何用FOR循环制作它,因为我有更多的雨图像然后sateliite所以我需要合并只有9个图像。

1 个答案:

答案 0 :(得分:2)

您可以使用Graphics.FromImage方法获取Graphics的{​​{1}},然后使用该对象的方法在图片上绘制所有内容:

Image