private void MakeCollage(IEnumerable<string> imageFilenames, string outputFilename) {
var collage = new Grid();
foreach (var filename in imageFilenames) {
collage.Children.Add(new Image {
Source = LoadBitmapImage(filename),
HorizontalAlignment = HorizontalAlignment.Center,
VerticalAlignment = VerticalAlignment.Center,
});
}
collage.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
collage.Arrange(new Rect(0d, 0d, collage.DesiredSize.Width, collage.DesiredSize.Height));
var bitmap = new RenderTargetBitmap((int)collage.DesiredSize.Width, (int)collage.DesiredSize.Height,
96, 96, PixelFormats.Default);
bitmap.Render(collage);
bitmap.SaveAsPng(outputFilename);
}