Creating Custom Shaped Windows Forms in .NET
8936 ワード

Creating custom shaped Windows Forms in .NET.
Introduction
One of the niftiest aspects of Windows Forms is that you can craft them into non-rectangular shapes. Microsoft Windows Media� Player 7 exhibits this feature, and, without doubt, many developers who see this want to incorporate it into their own applications. After much searching, I finally found the answer in MSDN.
Using the code
Following are the steps to create a simple non rectangular form:

FormBorderStyle
property to None
. BackgroundImage
property of the form to the .bmp you created above. TransparencyKey
property of the form to the background color of the .bmp file. In the case of the example above, you would set it to black. This will make the black portion of the form disappear. Note: Setting the FormBorderStyle
to None
disables the standard functionality provided by the title bar. Thus, you must add custom code to the project to allow the form to be moved, closed, minimized, and maximized. Writing code to close the form
Button
control to the form as shown in Fig 2. Text
property to "X
". Button
to add a Click
event handler. 
Collapse
|
Copy Code
private void button1_Click(object sender, System.EventArgs e)
{
this.Close();
}

Collapse
|
Copy Code
private void button2_Click(object sender, System.EventArgs e)
{
this.WindowState=FormWindowState.Minimized;
}

Writing code to move the form

Collapse
|
Copy Code
public Point mouse_offset;
This will store the mouse position when the form is clicked. MouseDown
event. 
mouse_offset
variable based on the current position of the mouse. 
Collapse
|
Copy Code
private void Form1_MouseDown(object sender,
System.Windows.Forms.MouseEventArgs e)
{
mouse_offset = new Point(-e.X, -e.Y);
}
MouseMove
event. Location
property is set to the new position. 
Collapse
|
Copy Code
private void Form1_MouseMove(object sender,
System.Windows.Forms.MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
Point mousePos = Control.MousePosition;
mousePos.Offset(mouse_offset.X, mouse_offset.Y);
Location = mousePos;
}
}
Save the application. Press F5 to run it. The form will be shaped like the image you drew at the beginning. Click anywhere on the form and drag it to see the move functionality. Click the Close Form button to close the form. 
License
This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.
A list of licenses authors might use can be found here