您好我将很多瓷砖组合成一个大图像。 Folloging本指南:http://www.switchonthecode.com/tutorials/combining-images-with-csharp它工作正常,但是如果最终图像的大小不是太大(否则我得到“参数无效。”错误)..所以谷歌搜索我读了我更好用WPF成像课程,但我找不到办法...
有人可以指点我一个教程或告诉我这样做吗?
谢谢!
答案 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)
这里的第一个答案应该给你一个想法......基本上创建一个合并尺寸的画布,然后适当地定位'瓷砖'。