/// <summary>
        /// Executes this filter on the input image and returns the result
        /// </summary>
        /// <param name="rawImage">The raw image.</param>
        /// <returns>
        /// transformed image
        /// </returns>
        /// <example> This sample shows how to use the Polaroids ExcuteFilter
        ///   <code>
        /// Image transformed;
        /// PolaroidFrameFilter polaroid = new PolaroidFrameFilter();
        /// polaroid.WithDropShadow = true;
        /// polaroid.Caption = "Pitzi";
        /// transformed = polaroid.ExecuteFilter(myImg);
        ///   </code>
        ///   </example>
        public override Image ExecuteFilter(Image rawImage)
        {
            ResizeFilter myFilter = new ResizeFilter();
            myFilter.Width = _width;
            myFilter.Height = _height;

            Image bpSrc = myFilter.ExecuteFilter(rawImage);
            Bitmap bm = new Bitmap(bpSrc.Width + _borderWidth, bpSrc.Height + _borderHeight);

            Graphics g = Graphics.FromImage(bm);
            g.DrawImage(bpSrc, _borderWidth / 2, 10);
            g.DrawRectangle(new Pen(Color.Black), 0, 0, bpSrc.Width + _borderWidth - 1, bpSrc.Height + _borderHeight - 1);

            int[] sizes = new int[] { 128, 64, 32, 16, 14, 12, 10, 8, 6, 4 };

            Font crFont = null;
            SizeF crSize = new SizeF();
            string text = _caption;
            int xCenterOfImg = (_width + _borderWidth) / 2;
            int yPosFromBottom = 10 + _height;

            //Loop through the defined sizes checking the length of the Copyright string
            //If its length in pixles is less then the image width choose this Font size.
            for (int i = 0; i < sizes.Length; i++)
            {
                //set a Font object to Arial (i)pt, Bold
                crFont = new Font("Lucida Handwriting", sizes[i], FontStyle.Bold);
                //Measure the Copyright string in this Font
                crSize = g.MeasureString(text, crFont);

                if ((ushort)crSize.Width < (ushort)_width)
                    break;
            }

            //Define the text layout by setting the text alignment to centered
            StringFormat StrFormat = new StringFormat();
            StrFormat.Alignment = StringAlignment.Center;

            //define a Brush which is semi trasparent black (Alpha set to 153)
            SolidBrush semiTransBrush = new SolidBrush(_captionColor);

            //Draw the Copyright string
            g.DrawString(text,                 //string of text
              crFont,                                   //font
              semiTransBrush,                           //Brush
              new PointF(xCenterOfImg + 1, yPosFromBottom + 1),  //Position
              StrFormat);

            //If drop shadow is turned on..
            if (WithDropShadow)
            {
                DropShadowFilter drFilter = new DropShadowFilter();
                bm = (Bitmap)drFilter.ExecuteFilter((Image)bm);
            }

            return bm;//
        }
Esempio n. 2
0
        /// <summary>
        /// Executes this filter on the input image and returns the result
        /// </summary>
        /// <param name="rawImage">The raw image.</param>
        /// <returns>
        /// transformed image
        /// </returns>
        /// <example> This sample shows how to use the Polaroids ExcuteFilter
        ///   <code>
        /// Image transformed;
        /// PolaroidFrameFilter polaroid = new PolaroidFrameFilter();
        /// polaroid.WithDropShadow = true;
        /// polaroid.Caption = "Pitzi";
        /// transformed = polaroid.ExecuteFilter(myImg);
        ///   </code>
        ///   </example>
        public override Image ExecuteFilter(Image rawImage)
        {
            ResizeFilter myFilter = new ResizeFilter();

            myFilter.Width  = _width;
            myFilter.Height = _height;

            Image  bpSrc = myFilter.ExecuteFilter(rawImage);
            Bitmap bm    = new Bitmap(bpSrc.Width + _borderWidth, bpSrc.Height + _borderHeight);

            Graphics g = Graphics.FromImage(bm);

            g.DrawImage(bpSrc, _borderWidth / 2, 10);
            g.DrawRectangle(new Pen(Color.Black), 0, 0, bpSrc.Width + _borderWidth - 1, bpSrc.Height + _borderHeight - 1);

            int[] sizes = new int[] { 128, 64, 32, 16, 14, 12, 10, 8, 6, 4 };

            Font   crFont         = null;
            SizeF  crSize         = new SizeF();
            string text           = _caption;
            int    xCenterOfImg   = (_width + _borderWidth) / 2;
            int    yPosFromBottom = 10 + _height;

            //Loop through the defined sizes checking the length of the Copyright string
            //If its length in pixles is less then the image width choose this Font size.
            for (int i = 0; i < sizes.Length; i++)
            {
                //set a Font object to Arial (i)pt, Bold
                crFont = new Font("Lucida Handwriting", sizes[i], FontStyle.Bold);
                //Measure the Copyright string in this Font
                crSize = g.MeasureString(text, crFont);

                if ((ushort)crSize.Width < (ushort)_width)
                {
                    break;
                }
            }

            //Define the text layout by setting the text alignment to centered
            StringFormat StrFormat = new StringFormat();

            StrFormat.Alignment = StringAlignment.Center;

            //define a Brush which is semi trasparent black (Alpha set to 153)
            SolidBrush semiTransBrush = new SolidBrush(_captionColor);

            //Draw the Copyright string
            g.DrawString(text,                                             //string of text
                         crFont,                                           //font
                         semiTransBrush,                                   //Brush
                         new PointF(xCenterOfImg + 1, yPosFromBottom + 1), //Position
                         StrFormat);

            //If drop shadow is turned on..
            if (WithDropShadow)
            {
                DropShadowFilter drFilter = new DropShadowFilter();
                bm = (Bitmap)drFilter.ExecuteFilter((Image)bm);
            }

            return(bm);//
        }