C#组合了许多图像-WPF图像类

本文关键字:图像 -WPF 许多 组合 | 更新日期: 2023-09-27 17:59:03

你好,我将许多瓦片组合成一个大图像。遵循本指南:http://www.switchonthecode.com/tutorials/combining-images-with-csharp它工作得很好,但前提是最终图像的大小不太大(否则我会得到"参数无效"错误)。。所以我在谷歌上读到我最好使用WPF成像类,但我找不到方法…

有人能给我指一个教程吗?或者告诉我怎么做?

谢谢!!

C#组合了许多图像-WPF图像类

我知道这是一个老问题,但刚刚在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;
    }

这里的第一个答案应该会给你一个想法。。。基本上创建一个组合大小的画布,然后适当地定位"瓷砖"。

在C#/中合并两个图像。NET