Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Watermark Picturebox

Posted on 2006-06-26
11
Medium Priority
?
1,002 Views
Last Modified: 2010-04-16
I have a picture box that I want to use as a watermark on the form anchored to the bottom right hand corner of the form.  When I resize the form, the picturebox covers the other controls on the form.

How can I make the other controls on the form show transparently throught the picturebox???


thanks in advance
0
Comment
Question by:ramrocket
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 6
  • 5
11 Comments
 
LVL 48

Expert Comment

by:AlexFM
ID: 16983868
Draw directly on the form in the Paint event handler. Instead of setting PictureBox.Image property, use Graphics.DrawImage method.
0
 

Author Comment

by:ramrocket
ID: 16983940
If I draw it directly to a location, the next time the form is resized will I have multiple overlapping image?
0
 
LVL 48

Expert Comment

by:AlexFM
ID: 16984015
If you want to draw background image, use the following code:

        Bitmap bmp;

        private void Form1_Load(object sender, EventArgs e)
        {
            bmp = new Bitmap("C:\\sample.bmp");        // replace this with your own bitmap

            this.SetStyle(
                ControlStyles.DoubleBuffer |
                ControlStyles.UserPaint |
                ControlStyles.AllPaintingInWmPaint |
                ControlStyles.ResizeRedraw,
                true);

            this.UpdateStyles();
        }

        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            e.Graphics.DrawImage(bmp, this.ClientRectangle);
        }

When form is resized, image is redrawn completely covering all client area.
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 

Author Comment

by:ramrocket
ID: 16984089
Alex, my image is only 200x200.  the clientrectangle parameter, is it possible for the image to be painted anchored to the bottom right hand corner?
0
 
LVL 48

Accepted Solution

by:
AlexFM earned 600 total points
ID: 16984181
You can change drawing code according to your needs. For example:

       private void Form1_Load(object sender, EventArgs e)
        {
            bmp = new Bitmap("C:\\sample.bmp");

            this.SetStyle(
                ControlStyles.ResizeRedraw,
                true);

            this.UpdateStyles();
        }

        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Rectangle rect = new Rectangle(this.ClientRectangle.Width - bmp.Width,
                this.ClientRectangle.Height - bmp.Height,
                bmp.Width, bmp.Height);

            e.Graphics.DrawImage(bmp, rect);
        }
0
 

Author Comment

by:ramrocket
ID: 16984189
I tried your code.  The image is stretched to the size of the form.  I need the image to remain in its original size but anchored to the bottom right hand corner
0
 
LVL 48

Expert Comment

by:AlexFM
ID: 16984244
Try last post.
0
 

Author Comment

by:ramrocket
ID: 16984265
Alex, the image is now in the right place but the controls over the image still covers the image and does not show transparently.

I will increase the points.  thanks
0
 

Author Comment

by:ramrocket
ID: 16984303
The other controls are labels that I placed inside of a panel container.  This is the control I need to show through the watermark image.
0
 
LVL 48

Expert Comment

by:AlexFM
ID: 16984325
What controls? I don't think that there is universal solution for all controls. For example, it is possible to make label transparent setting it's BackColor property to Transparent in the Form Designer of in the code:

this.label1.BackColor = System.Drawing.Color.Transparent;

Search information about every specific control type.
0
 

Author Comment

by:ramrocket
ID: 16984369
thanks, I got it work.
0

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

Question has a verified solution.

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

Introduction This article series is supposed to shed some light on the use of IDisposable and objects that inherit from it. In essence, a more apt title for this article would be: using (IDisposable) {}. I’m just not sure how many people would ge…
This article aims to explain the working of CircularLogArchiver. This tool was designed to solve the buildup of log file in cases where systems do not support circular logging or where circular logging is not enabled
In response to a need for security and privacy, and to continue fostering an environment members can turn to for support, solutions, and education, Experts Exchange has created anonymous question capabilities. This new feature is available to our Pr…
We’ve all felt that sense of false security before—locking down external access to a database or component and feeling like we’ve done all we need to do to secure company data. But that feeling is fleeting. Attacks these days can happen in many w…

722 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