Projekt-Anfragen: Tel: 07022/9319004 info@CodeDocu.de Software Entwicklung in C# WPF Asp.Net Core Vba Excel Word SQL-Server EF Linq, UWP Net
#

 

 

Der folgende C# Code unter WPF macht folgendes: ein Screenshot Bild aus der Clipboard wird verkleinert auf eine definierte Bildbreite.

 

1.     Bild erstellen als Ebene

2.     DrawingContext: Bild einfügen

3.     DrawingContext: Bild verkleinern

 

 

       private static BitmapFrame create_ResizedImage(ImageSource source, int width_centimeters)

        {

            //-------------< create_ResizedImage() >-------------

            // inches = pixels / dpi

            // pixel = inches * dpi

            // 1 centimeter = 0.393700787 inch

            // pixel = cm * 0.393700787  * dpi

            int margin = 1;

            int dpi = 96;// act_factor_dpi_Width*96.0;

            double scale_Height = source.Height / source.Width;

            int width_Dpi = (int)(width_centimeters * 0.393700787 * dpi);

            int height_Dpi = (int)(width_Dpi * scale_Height);

 

            //----< create empty DrawingImage >----

            var rect = new Rect(margin, margin, width_Dpi - margin * 1, height_Dpi - margin * 1);

 

            var group = new DrawingGroup();

            RenderOptions.SetBitmapScalingMode(group, BitmapScalingMode.Fant);

            group.Children.Add(new ImageDrawing(source, rect));

            //----</ create empty DrawingImage >----

 

            //----< resize >----

            DrawingVisual drawingVisual = new DrawingVisual();

            DrawingContext drawingContext = drawingVisual.RenderOpen();           

            drawingContext.DrawDrawing(group);

 

            RenderTargetBitmap resizedImage = new RenderTargetBitmap(width_Dpi, height_Dpi, dpi, dpi, PixelFormats.Default);

            resizedImage.Render(drawingVisual);

            // Resized dimensions

            // Default DPI values

            // Default pixel format

            //----</ resize >----

 

            return BitmapFrame.Create(resizedImage);

            //-------------</ create_ResizedImage() >-------------

        }

 

 

 

 

 

Aufruf aus der Aufgabe, das Clipboard als Image zu verabeiten:

       public void fp_CopyToClipboard_and_Minimize()

        {

            //-------------< fp_CopyClipboard_Minimize() >-------------

            //< Kontrolle.abbruch >

            if (ctlImage.Source==null)

            {

                this.Hide();

                return;

            }

            //</ Kontrolle.abbruch >

 

            //*erstellt einen Ausschnitt aus dem Image

            fp_Init_FactorDPI();

            int intOffset_Titlebar = (int) SystemParameters.CaptionHeight;

            int intLeft = (int)((ctlSelection.Margin.Left-2)* act_factor_dpi_Width);

            int intTop = (int)((ctlSelection.Margin.Top ) * act_factor_dpi_Height);

            int intWidth = (int)((ctlSelection.ActualWidth+4) * act_factor_dpi_Width) ;

            int intHeight = (int)((ctlSelection.ActualHeight  )*act_factor_dpi_Height);//+ intOffset_Titlebar

            //System.Windows.Media.Imaging.CroppedBitmap

 

            int intMaxWidth = (int)(SystemParameters.PrimaryScreenWidth * act_factor_dpi_Width);

            int intMaxHeight = (int)(SystemParameters.PrimaryScreenHeight  * act_factor_dpi_Height);

            //< korrektur >

            if (intTop < 0) { intTop = 0; }

            if (intLeft < 0) { intLeft = 0; }

            if ((intLeft + intWidth) > intMaxWidth) { intWidth = intMaxWidth - intLeft; }

            if ((intTop + intHeight) > intMaxHeight) { intHeight  = intMaxHeight - intTop; }

            //</ korrektur >

 

 

            //< get Screen_Rectangle >

            Int32Rect rectCrop = new Int32Rect(intLeft, intTop, intWidth, intHeight);

            CroppedBitmap myCrop = new CroppedBitmap((BitmapSource)ctlImage.Source, rectCrop);

            //</ get Screen_Rectangle  >

 

 

            BitmapFrame resized_img = create_ResizedImage(myCrop, 19);

            //</ opt: scale_to_width >

 

            //< in Clipboard speichern >

            Clipboard.SetImage(resized_img);

            //</ in Clipboard speichern >

 

            //< in Tray stellen >

            this.Hide();

            //</ in Tray stellen >

            //-------------</ fp_CopyClipboard_Minimize() >-------------

        }

 

 

Mobile
»
WPF: Bitmap verkleinern mit TransformedBitmap
»
WPF: ImageSource als Bild verkleinern
»
WPF: Vorschau Bilder von Videos erstellen
»
WPF Fehler: 2147024864 Der Prozess kann nicht auf die Datei zugreifen, da sie bereits von einem anderen Prozess verwendet wird.
»
WPF: Bilder als Thumbnails laden
»
WPF: Image zur Laufzeit erstellen

.

Jobs, Projekte, Angebote für Freiberufler, Selbstständig an Info@CodeDocu.de