#

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() >-----------------

}

 

Mobile

.

123movies