Sie können so etwas wie diese (nicht meinen Code, von Msdn sozialen genommen) tun:
public static RenderTargetBitmap GetJpgImage(UIElement targetUIElement, double scale, int quality)
{
double actualHeight = targetUIElement.RenderSize.Height;
double actualWidth = targetUIElement.RenderSize.Width;
double renderedHeight = actualHeight * scale;
double renderedWidth = actualWidth * scale;
RenderTargetBitmap renderTarget = new RenderTargetBitmap((int)renderedWidth, (int)renderedHeight, 96, 96, PixelFormats.Pbgra32);
VisualBrush sourceBrush = new VisualBrush(targetUIElement);
DrawingVisual drawingVisual = new DrawingVisual();
DrawingContext drawingContext = drawingVisual.RenderOpen();
using (drawingContext)
{
drawingContext.PushTransform(new ScaleTransform(scale, scale));
drawingContext.DrawRectangle(sourceBrush, null, new Rect(new System.Windows.Point(0, 0), new System.Windows.Point(actualWidth, actualHeight)));
}
renderTarget.Render(drawingVisual);
JpegBitmapEncoder jpgEncoder = new JpegBitmapEncoder();
jpgEncoder.QualityLevel = quality;
jpgEncoder.Frames.Add(BitmapFrame.Create(renderTarget));
MemoryStream memoryStream = new MemoryStream();
jpgEncoder.Save(memoryStream);
File.WriteAllBytes(@"D:\a.jpg", memoryStream.ToArray());
return renderTarget;
}
Aufwendige an diesem Code Abschnitt aus der JPG in Quadrate, dann können Sie ein Gitter verwenden, programmatisch zu schaffen eine Reihe von Spalten und Zeilen und die programmierten Eigenschaften Grid.Row und Grid.Column für die Bilder, um anzugeben, welche (geschnittenen) Bilder vorhanden sind.
Wie definieren Sie am besten? Irgendwelche Speicher- oder CPU-Einschränkungen? – BenMaddox
Dafür möchte ich für "einfachste" optimieren. :-) Ich möchte Expression Blend verwenden, um Spielstufen zu erstellen und dann das Spielniveau in .png aufzuteilen, damit sie in eine Spielengine gesaugt werden können. –