Solved

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

Posted on 2008-06-25
2
592 Views
Last Modified: 2010-05-18
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
Comment
Question by:Nugs
2 Comments
 
LVL 2

Author Comment

by:Nugs
ID: 21869448
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
 
LVL 96

Accepted Solution

by:
Bob Learned earned 500 total points
ID: 21874203
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

What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

Join & Write a Comment

This article is for Object-Oriented Programming (OOP) beginners. An Interface contains declarations of events, indexers, methods and/or properties. Any class which implements the Interface should provide the concrete implementation for each Inter…
Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
Polish reports in Access so they look terrific. Take yourself to another level. Equations, Back Color, Alternate Back Color. Write easy VBA Code. Tighten space to use less pages. Launch report from a menu, considering criteria only when it is filled…
This video explains how to create simple products associated to Magento configurable product and offers fast way of their generation with Store Manager for Magento tool.

707 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now