C#结合了大量图像 - WPF成像类

时间:2011-06-12 22:16:38

标签: c# wpf image

您好我将很多瓷砖组合成一个大图像。 Folloging本指南:http://www.switchonthecode.com/tutorials/combining-images-with-csharp它工作正常,但是如果最终图像的大小不是太大(否则我得到“参数无效。”错误)..所以谷歌搜索我读了我更好用WPF成像课程,但我找不到办法...

有人可以指点我一个教程或告诉我这样做吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

我知道这是一个老问题,但是在WPF中遇到了这个问题,我找到的所有解决方案都没有直接回答这个问题,但是以下方法合并了BitmapSource的列表,因此输出图像是图像中的最大尺寸列表:

public static BitmapSource MergeImages(IList<BitmapSource> bmpSrcList) {
        int width = 0,height = 0,dpiX = 0,dpiY = 0;
        // Get max dimensions and dpi of the images
        foreach (var image in bmpSrcList) {
            width = Math.Max(image.PixelWidth,width);
            height = Math.Max(image.PixelHeight, height);
            dpiX = Math.Max((int)image.DpiX, dpiX);
            dpiY = Math.Max((int)image.DpiY, dpiY);
        }
        var renderTargetBitmap = new RenderTargetBitmap(width, height, dpiX, dpiY, PixelFormats.Pbgra32);
        var drawingVisual = new DrawingVisual();
        using (var drawingContext = drawingVisual.RenderOpen()) {
            foreach (var image in bmpSrcList) {
                drawingContext.DrawImage(image, new Rect(0, 0, width, height));
            }
        }
        renderTargetBitmap.Render(drawingVisual);

        return renderTargetBitmap;
    }

答案 1 :(得分:-1)

这里的第一个答案应该给你一个想法......基本上创建一个合并尺寸的画布,然后适当地定位'瓷砖'。

Merging two images in C#/.NET

相关问题