Solved

.Net Transparent Form Back Ground

Posted on 2010-09-21
14
325 Views
Last Modified: 2012-05-10
I want a form background as this :

http://www.launchy.net/images/screenshot_sheep.jpg

how should i do it
0
Comment
Question by:3XLcom
  • 7
  • 5
  • 2
14 Comments
 
LVL 19

Expert Comment

by:Shahan Ayyub
Comment Utility
Hi!

One way as I see is that you can use two forms form1, form2.

form1 has opacity is less, like 20% etc and
form2 has opacity 100%

form1 has ShowInTaskbar property =false.
0
 

Author Comment

by:3XLcom
Comment Utility
ok what about corner on the forms
0
 
LVL 19

Expert Comment

by:Shahan Ayyub
Comment Utility
You can use Form_Paint event to redraw the form by making Polygon(Graphics.DrawPolygon). This will help to reshape the form.
0
 
LVL 8

Expert Comment

by:mac-will
Comment Utility
The partial class below give the form in this screenshot.

You would need to add quite a bit of mouse/focus handling code...

MAC
   public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }



        internal static GraphicsPath CreateRoundedRectanglePath(Rectangle rect, int cornerRadius)

        {



            GraphicsPath roundedRect = new GraphicsPath();

            roundedRect.AddArc(rect.X, rect.Y, cornerRadius * 2, cornerRadius * 2, 180, 90);

            roundedRect.AddLine(rect.X + cornerRadius, rect.Y, rect.Right - cornerRadius * 2, rect.Y);

            roundedRect.AddArc(rect.X + rect.Width - cornerRadius * 2, rect.Y, cornerRadius * 2, cornerRadius * 2, 270, 90);

            roundedRect.AddLine(rect.Right, rect.Y + cornerRadius * 2, rect.Right, rect.Y + rect.Height - cornerRadius * 2);



            roundedRect.AddArc(rect.X + rect.Width - cornerRadius * 2, rect.Y + rect.Height - cornerRadius * 2, cornerRadius * 2, cornerRadius * 2, 0, 90);



            roundedRect.AddLine(rect.Right - cornerRadius * 2, rect.Bottom, rect.X + cornerRadius * 2, rect.Bottom);

            roundedRect.AddArc(rect.X, rect.Bottom - cornerRadius * 2, cornerRadius * 2, cornerRadius * 2, 90, 90);

            roundedRect.AddLine(rect.X, rect.Bottom - cornerRadius * 2, rect.X, rect.Y + cornerRadius * 2);

            roundedRect.CloseFigure();

            return roundedRect;



        }





        protected override void OnPaint(PaintEventArgs e)

        {

            Rectangle lRect = new Rectangle(new Point(0,0), this.Bounds.Size);

            lRect.Inflate(-1, -1);



            using (GraphicsPath path = CreateRoundedRectanglePath(lRect, 12))

            {

                e.Graphics.DrawPath(Pens.White, path);



                e.Graphics.FillPath(new LinearGradientBrush(lRect,

                    Color.FromArgb(100, Color.White), 

                    Color.FromArgb(100, Color.WhiteSmoke),  

                    LinearGradientMode.Vertical), path);

            }



            lRect.Inflate(-18, -18);

            using (GraphicsPath path = CreateRoundedRectanglePath(lRect, 12))

            {

                e.Graphics.DrawPath(Pens.White, path);



                e.Graphics.FillPath(new LinearGradientBrush(lRect,

                    Color.DarkGray,

                    Color.Black,

                    LinearGradientMode.Vertical), path);

            }



            e.Graphics.DrawString("Hello test 1,2,3...", this.Font, Brushes.WhiteSmoke, new PointF(50, 50));

        }

        protected override void OnActivated(EventArgs e)

        {

            base.OnActivated(e);

            this.Invalidate();

        }



        /// <summary>

        /// Gets the creation parameters.

        /// </summary>

        protected override CreateParams CreateParams

        {

            get

            {

                CreateParams cp = base.CreateParams;

                cp.ExStyle |= 0x20;

                return cp;

            }

        }



        /// <summary>

        /// Paints the background.

        /// </summary>

        /// <param name="e">E.</param>

        protected override void OnPaintBackground(PaintEventArgs e)

        {

            // do nothing

        }



        protected void InvalidateEx()

        {



            if (Parent == null)

                return;



            Rectangle rc = new Rectangle(this.Location, this.Size);



            Parent.Invalidate(rc, true);

        }

    }

Open in new window

Untitled.jpg
0
 

Author Comment

by:3XLcom
Comment Utility
CreateRoundedRectanglePath()

how should i use this function i don't understand i am sorry
0
 
LVL 8

Expert Comment

by:mac-will
Comment Utility
See how I used it in the example OnPaint method above.
0
 

Author Comment

by:3XLcom
Comment Utility
i checked it already, i could not find what to write to :
Rectangle rect, int cornerRadius
0
Better Security Awareness With Threat Intelligence

See how one of the leading financial services organizations uses Recorded Future as part of a holistic threat intelligence program to promote security awareness and proactively and efficiently identify threats.

 
LVL 8

Expert Comment

by:mac-will
Comment Utility
I'm not sure what you mean.  What do you mean when you say "could not find what to write"?

Basically I provided a complete class that produces the look of a form much like your example.

The function CreateRoundedRectanglePath() takes as parameters a rectangle and a corner radius and returns a graphics path of a rounded rectangle.


Do you understand what is going on here?  We are custom painting the form.
0
 

Author Comment

by:3XLcom
Comment Utility
yes i understand but i do not understand how to call CreateRoundedRectanglePath() this function for ex.


CreateRoundedRectanglePath(?????, 12);

sth like this but what will i put the ????? part
0
 
LVL 8

Accepted Solution

by:
mac-will earned 500 total points
Comment Utility
This parameters takes a Rectangle Object.

For example a Form has a Bounds Rectangle.

try making a new rectangle

Rectangle myRect =  new Rectangle(0, 0, 100, 300);
0
 

Author Closing Comment

by:3XLcom
Comment Utility
Thanks Perfect Job
0
 

Author Comment

by:3XLcom
Comment Utility
I want to add one thing if sth. come behind to the form then go out the shadow getting worst why ?
Untitled.png
0
 
LVL 8

Expert Comment

by:mac-will
Comment Utility
because it isn't repainting the desktop properly so it is repainting over itself...
0
 

Author Comment

by:3XLcom
Comment Utility
do you have any advice for solution?
0

Featured Post

IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

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.
In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…
Here's a very brief overview of the methods PRTG Network Monitor (https://www.paessler.com/prtg) offers for monitoring bandwidth, to help you decide which methods you´d like to investigate in more detail.  The methods are covered in more detail in o…

762 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

8 Experts available now in Live!

Get 1:1 Help Now