protected Image DrawReflection(Image bmp)
        {
            Bitmap reflection = WatermarkEffects.AddReflection(bmp, Config.ReflectionPercentage, Config.ReflectionTransparency);

            if (Config.ReflectionSkew)
            {
                reflection = AddSkew(reflection, Config.ReflectionSkewSize);
            }
            Bitmap   result = new Bitmap(reflection.Width, bmp.Height + reflection.Height + Config.ReflectionOffset);
            Graphics g      = Graphics.FromImage(result);

            g.DrawImage(bmp, new Point(0, 0));
            g.DrawImage(reflection, new Point(0, bmp.Height + Config.ReflectionOffset));
            return(result);
        }
        private void ProcessImage(Image img)
        {
            States.Add(TaskState.ImageProcessed);
            bool window = Job2 == JobLevel2.CaptureActiveWindow || Job2 == JobLevel2.CaptureSelectedWindow ||
                          Job2 == JobLevel2.CaptureEntireScreen;

            if (img != null)
            {
                if (!window)
                {
                    // Add Rounded corners
                    bool roundedShadowCorners = false;
                    if (Engine.ConfigUI.ImageAddRoundedCorners)
                    {
                        img = HelpersLib.GraphicsHelper.Core.RemoveCorners(img, null);
                        roundedShadowCorners = true;
                    }

                    // Add shadows
                    if (Engine.ConfigUI.ImageAddShadow)
                    {
                        img = HelpersLib.GraphicsHelper.Core.AddBorderShadow(img, roundedShadowCorners);
                    }
                }

                // Effects
                var effects = new ZScreenCoreLib.ScreenshotEffectsHelper(Engine.ConfigOptions.ConfigImageEffects);
                img = effects.ApplySizeChanges(img);
                img = effects.ApplyScreenshotEffects(img);

                // Watermark
                if (Job2 != JobLevel2.UploadFromClipboard || !Engine.ConfigWorkflow.ConfigWatermark.WatermarkExcludeClipboardUpload)
                {
                    img = new WatermarkEffects(WorkflowConfig.ConfigWatermark).ApplyWatermark(img, GetNameParser(NameParserType.Watermark));
                }

                TempImage = img;
            }
        }