WPF: Speichern
des Hintergrunds einer Windows App als ScreenShot
Der folgendene C# Code speichert den aktuellen
Hintergrund oder die Darstellung einer Windows 32 WPF App als Bitmap
Dieses Beispiel zeigt auch, dass nur die App Anwendung
erfasst wird und nicht der dahinter liegende Desktop Hintergrund.
C# Code zum
Rendern:
Schritt 1: erstellen eines Renderers
Schritt 2: Ausgabe als Bitmap
Schritt 3: Speichern der Bitmap als File
Beim verwenden eines durchsichtigen Hintergrundes wird
dennoch nur bis zur App gerendert.
Man kann also weder in UWP noch WPF den Hintergrund des
Desktops damit erfassen
C# Code zum
Rendern:
Schritt 1: erstellen eines Renderers
Schritt 2: Ausgabe als Bitmap
Schritt 3: Speichern der Bitmap als File
//*render a xaml Element to a Bitmap
File
//< render >
RenderTargetBitmap bitmap_Renderer = new RenderTargetBitmap((int) element.RenderSize.Width, (int)element.RenderSize.Height,96, 96, PixelFormats.Pbgra32);
bitmap_Renderer.Render(element);
//</ render >
//< get Bitmap >
BitmapFrame outputFrame = BitmapFrame.Create(bitmap_Renderer);
//</ get Bitmap >
//< save as File >
PngBitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(outputFrame);
using (var file = File.OpenWrite("C:\\_Daten\\Desktop\\Neuer
Ordner\\TestImage.png"))
{
encoder.Save(file);
}
//</
save as File >
|
Completter C# Code
private void btnScreenShot_Click(object sender, RoutedEventArgs e)
{
render_UIElement_to_Bitmap_File(this);
//RenderVisual(this);
}
public void render_UIElement_to_Bitmap_File(UIElement element)
{
//-----------------<
render_UIElement_to_Bitmap_File() >-----------------
//*render a xaml Element to a
Bitmap File
//< render >
RenderTargetBitmap bitmap_Renderer = new RenderTargetBitmap((int) element.RenderSize.Width, (int)element.RenderSize.Height,96, 96, PixelFormats.Pbgra32);
bitmap_Renderer.Render(element);
//</ render >
//< get Bitmap >
BitmapFrame outputFrame = BitmapFrame.Create(bitmap_Renderer);
//</ get Bitmap >
//< save as File >
PngBitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(outputFrame);
using (var file = File.OpenWrite("C:\\_Daten\\Desktop\\Neuer
Ordner\\TestImage.png"))
{
encoder.Save(file);
}
//</ save as File >
//-----------------</
render_UIElement_to_Bitmap_File() >-----------------
}
|