Solved

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

Posted on 2008-06-25
2
603 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

Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
C# guarantee sql connection close 6 50
InputLanguage 1 33
Following an example - Why do I need to click Save button twice? 3 29
Why use this lambda? 12 37
Article by: Najam
Having new technologies does not mean they will completely replace old components.  Recently I had to create WCF that will be called by VB6 component.  Here I will describe what steps one should follow while doing so, please feel free to post any qu…
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…
Email security requires an ever evolving service that stays up to date with counter-evolving threats. The Email Laundry perform Research and Development to ensure their email security service evolves faster than cyber criminals. We apply our Threat…
I've attached the XLSM Excel spreadsheet I used in the video and also text files containing the macros used below. https://filedb.experts-exchange.com/incoming/2017/03_w12/1151775/Permutations.txt https://filedb.experts-exchange.com/incoming/201…

861 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