[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 630
  • Last Modified:

Need some help with System.Drawing.PointF or System.Drawing...

Hi... Me again...

I have HTTPHandler method that draws a watermark ontop of my product images. Slightly modified from this article to fit my HTTPHandler ( http://blog.donnfelker.com/2007/09/18/WatermarkingImagesInASPNETWithAnHttpHandler.aspx )

I want to make the watermark display ontop the image in a angle, from top left to bottom right... Also want it to extend the length of the image and never overlap?

Anyone know how i can do that?

Nugs
protected static System.Drawing.Image WatermarkImage(System.Drawing.Image image, string watermark)
    {
        Graphics graphic;
        if (image.PixelFormat != PixelFormat.Indexed && image.PixelFormat != PixelFormat.Format8bppIndexed && image.PixelFormat != PixelFormat.Format4bppIndexed && image.PixelFormat != PixelFormat.Format1bppIndexed)
        {
            graphic = Graphics.FromImage(image);
        }
        else
        {
            Bitmap indexedImage = new Bitmap(image);
            graphic = Graphics.FromImage(indexedImage);
 
            graphic.DrawImage(image, 0, 0, image.Width, image.Height);
            image = indexedImage;
        }
        graphic.SmoothingMode = SmoothingMode.AntiAlias & SmoothingMode.HighQuality;
 
        Font myFont = new Font("Arial", 10, FontStyle.Bold);
        SolidBrush brush = new SolidBrush(Color.FromArgb(80, Color.White));
        SizeF textSize = graphic.MeasureString(watermark, myFont);
 
        //WRITE THE TEXT ACROSS THE IMAGE. 
        //for (int y = 0; y < image.Height; y++)
        //{
        //    for (int x = 0; x < image.Width; x++)
        //    {
        PointF pointF = new PointF(0, image.Height / 2);
        graphic.DrawString(watermark, myFont, brush, pointF);
        //        x += Convert.ToInt32(textSize.Width);
        //    }
        //    y += Convert.ToInt32(textSize.Height);
        //}
 
        return image;
    }

Open in new window

0
Nugs
Asked:
Nugs
1 Solution
 
NugsAuthor Commented:
Ok i managed to get the 45 degree angle. But how to i scale the text to fit the size of the image?

Nugs
    protected static System.Drawing.Image WatermarkImage(System.Drawing.Image image, string watermark)
    {
        Graphics graphic;
        if (image.PixelFormat != PixelFormat.Indexed && image.PixelFormat != PixelFormat.Format8bppIndexed && image.PixelFormat != PixelFormat.Format4bppIndexed && image.PixelFormat != PixelFormat.Format1bppIndexed)
        {
            graphic = Graphics.FromImage(image);
        }
        else
        {
            Bitmap indexedImage = new Bitmap(image);
            graphic = Graphics.FromImage(indexedImage);
 
            graphic.DrawImage(image, 0, 0, image.Width, image.Height);
            image = indexedImage;
        }
        graphic.SmoothingMode = SmoothingMode.AntiAlias & SmoothingMode.HighQuality;
 
        Font myFont = new Font("Arial", 10, FontStyle.Bold);
        SolidBrush brush = new SolidBrush(Color.FromArgb(80, Color.White));
        Rectangle rectan = new Rectangle(0, 0, image.Width, image.Height);
 
        graphic.FillRectangle(Brushes.Transparent, rectan);
        graphic.DrawString(watermark, myFont, brush, 0, 0);
        graphic.RotateTransform(45);
        graphic.DrawString(watermark, myFont, brush, 0, 0);
        
        return image;
    }

Open in new window

0
 
Bob LearnedCommented:
I would think, on the surface, that you need to find a ScaleTransform ratio that gives you the "stretch" that you need.
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Tackle projects and never again get stuck behind a technical roadblock.
Join Now