Introduction
Building none rectangular form is possible within the .Net environment, thus, I will show in this article how to build none rectangular form using C# and GDI+ libraries. First let us make a little experience:
Figure1
Open a new windows application project. A form named Form1 is added by default as the figure bellow shows.
As we see in the figure 1, the form is visible and it is rectangular as in the ordinary case. Now, press F4 in order to show the properties grid related to the given form. And select the transparency key as the figure 2 shows.
Figure 2
Now, select system in the multi tab and then control as the figure below:
Figure 3
Run the project now, and observe:
Figure 4
In the figure 4 we can remark that only the form layout is visible, at the contrast, the form container is hidden. Now, if we change the form border style to none, the entire form will be hidden.
Now, we can use the GDI+ libraries especially "System. Drawing" and "System. Drawing 2D" to draw our customized form.
To do that add a paint event handler according to the form and implement it as follow:
private void Form1_Paint(object sender, PaintEventArgs e)
{
using (Graphics myGraphic = e.Graphics)
{
//Set the smoothing mode to enhance the quality of the image
myGraphic.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
//The gradien brush needs the System.Drawing.Drawing2D
LinearGradientBrush myBruch = new LinearGradientBrush(new Point(0,0),new Point(600,400),Color.Red,Color.Bisque);
Rectangle myRectangle = new Rectangle(new Point(0,0),new Size(600,400));
LinearGradientBrush myStringBruch = new LinearGradientBrush(new Point(10,10),new Point(300,200), Color.Bisque,Color. Red);
myGraphic.FillEllipse(myBruch, myRectangle);
//Draw the string title
//The string content
string sTitle = "This is the connection page";
//The font
Font myFont = new Font("Arial", 29);
//The bruch
SolidBrush StringBruch = new SolidBrush(Color.Purple);
// Use the draw string method to add the title into the page
myGraphic.DrawString(sTitle,myFont,StringBruch,new PointF(20,20));
}
}
Then implement the load event handler as follow:
private void Form1_Load(object sender, EventArgs e)
{
//Set the form border style to none
this.FormBorderStyle = FormBorderStyle.None;
//TextBoxes configurations
TextBox UserTextBox = new TextBox();
TextBox PassTextBox = new TextBox();
UserTextBox.Location = new Point(285, 201);
UserTextBox.Size = new Size(159, 20);
PassTextBox.Location = new Point(285, 240);
PassTextBox.Size = new Size(159, 30);
UserTextBox.Parent = this;
PassTextBox.Parent = this;
//Labels configurations
Label UserLabel = new Label();
Label PassLabel = new Label();
UserLabel.Location = new Point(180, 201);
PassLabel.Location = new Point(180, 240);
UserLabel.Text = "User name";
PassLabel.Text = "Password";
UserLabel.Parent = this;
PassLabel.Parent = this;
//Buttons configurations
Button CancelButton = new Button();
Button ConnectionButton = new Button();
CancelButton.Location = new Point(290, 280);
ConnectionButton.Location = new Point(370, 280);
CancelButton.Text = "Cancel";
ConnectionButton.Text = "Connection";
CancelButton.Parent = this;
ConnectionButton.Parent = this;
//Add event handlers to the click events according to the buttons
CancelButton.Click +=new EventHandler(CancelButton_Click);
ConnectionButton.Click +=new EventHandler(ConnectionButton_Click);
}
Now, we implement the Cancel button event handler to be responsible of disposing the customized form and we implement the connection button event handler to customize the form behavior in a connection context.
private void CancelButton_Click(object sender, EventArgs e)
{
//To dispose the customized form
this.Dispose();
}
private void ConnectionButton_Click(object sender, EventArgs e)
{
//TO DO: Impelement this event handler by a customized code
MessageBox.Show("This event handler is empty from code", "This event handler is empty from code",MessageBoxButtons.OK, MessageBoxIcon.Information);
}
Finally, run the application and observe:
Figure 5
As you see the form is none rectangular, that's it without any complications, in deed; It is possible to customize a form as we like and according to our imagination.