/* User Interfaces in C#: Windows Forms and Custom Controls by Matthew MacDonald Publisher: Apress ISBN: 1590590457 */ using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.Drawing.Drawing2D; /// <summary> /// Summary description for IrregularlyShapedForms. /// </summary> public class IrregularlyShapedForms : System.Windows.Forms.Form { internal System.Windows.Forms.Label lblDrag; internal System.Windows.Forms.PictureBox picFour; internal System.Windows.Forms.PictureBox picThree; internal System.Windows.Forms.PictureBox picOne; internal System.Windows.Forms.PictureBox picTwo; internal System.Windows.Forms.ImageList imgNormalButtons; internal System.Windows.Forms.ImageList imgSelectedButtons; private System.ComponentModel.IContainer components; public IrregularlyShapedForms() { // // Required for Windows Form Designer support // InitializeComponent(); // // TODO: Add any constructor code after InitializeComponent call // } /// <summary> /// Clean up any resources being used. /// </summary> protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows Form Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.components = new System.ComponentModel.Container(); System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(IrregularlyShapedForms)); this.lblDrag = new System.Windows.Forms.Label(); this.picFour = new System.Windows.Forms.PictureBox(); this.picThree = new System.Windows.Forms.PictureBox(); this.picOne = new System.Windows.Forms.PictureBox(); this.picTwo = new System.Windows.Forms.PictureBox(); this.imgNormalButtons = new System.Windows.Forms.ImageList(this.components); this.imgSelectedButtons = new System.Windows.Forms.ImageList(this.components); this.SuspendLayout(); // // lblDrag // this.lblDrag.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(224)), ((System.Byte)(224)), ((System.Byte)(224))); this.lblDrag.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; this.lblDrag.Location = new System.Drawing.Point(80, 36); this.lblDrag.Name = "lblDrag"; this.lblDrag.Size = new System.Drawing.Size(124, 20); this.lblDrag.TabIndex = 9; this.lblDrag.Text = " < Drag Here! >"; this.lblDrag.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lblDrag_MouseUp); this.lblDrag.MouseMove += new System.Windows.Forms.MouseEventHandler(this.lblDrag_MouseMove); this.lblDrag.MouseDown += new System.Windows.Forms.MouseEventHandler(this.lblDrag_MouseDown); // // picFour // this.picFour.Image = ((System.Drawing.Bitmap)(resources.GetObject("picFour.Image"))); this.picFour.Location = new System.Drawing.Point(44, 176); this.picFour.Name = "picFour"; this.picFour.Size = new System.Drawing.Size(209, 29); this.picFour.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.picFour.TabIndex = 8; this.picFour.TabStop = false; this.picFour.Tag = "3"; this.picFour.Click += new System.EventHandler(this.picFour_Click); this.picFour.MouseEnter += new System.EventHandler(this.pic_MouseEnter); this.picFour.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pic_MouseUp); this.picFour.MouseLeave += new System.EventHandler(this.pic_MouseLeave); this.picFour.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pic_MouseDown); // // picThree // this.picThree.Image = ((System.Drawing.Bitmap)(resources.GetObject("picThree.Image"))); this.picThree.Location = new System.Drawing.Point(44, 144); this.picThree.Name = "picThree"; this.picThree.Size = new System.Drawing.Size(209, 27); this.picThree.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.picThree.TabIndex = 7; this.picThree.TabStop = false; this.picThree.Tag = "2"; this.picThree.MouseEnter += new System.EventHandler(this.pic_MouseEnter); this.picThree.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pic_MouseUp); this.picThree.MouseLeave += new System.EventHandler(this.pic_MouseLeave); this.picThree.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pic_MouseDown); // // picOne // this.picOne.Image = ((System.Drawing.Bitmap)(resources.GetObject("picOne.Image"))); this.picOne.Location = new System.Drawing.Point(44, 80); this.picOne.Name = "picOne"; this.picOne.Size = new System.Drawing.Size(209, 26); this.picOne.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.picOne.TabIndex = 6; this.picOne.TabStop = false; this.picOne.Tag = "0"; this.picOne.MouseEnter += new System.EventHandler(this.pic_MouseEnter); this.picOne.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pic_MouseUp); this.picOne.MouseLeave += new System.EventHandler(this.pic_MouseLeave); this.picOne.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pic_MouseDown); // // picTwo // this.picTwo.Image = ((System.Drawing.Bitmap)(resources.GetObject("picTwo.Image"))); this.picTwo.Location = new System.Drawing.Point(44, 112); this.picTwo.Name = "picTwo"; this.picTwo.Size = new System.Drawing.Size(209, 28); this.picTwo.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.picTwo.TabIndex = 5; this.picTwo.TabStop = false; this.picTwo.Tag = "1"; this.picTwo.MouseEnter += new System.EventHandler(this.pic_MouseEnter); this.picTwo.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pic_MouseUp); this.picTwo.MouseLeave += new System.EventHandler(this.pic_MouseLeave); this.picTwo.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pic_MouseDown); // // imgNormalButtons // this.imgNormalButtons.ColorDepth = System.Windows.Forms.ColorDepth.Depth16Bit; this.imgNormalButtons.ImageSize = new System.Drawing.Size(209, 29); this.imgNormalButtons.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imgNormalButtons.ImageStream"))); this.imgNormalButtons.TransparentColor = System.Drawing.Color.Transparent; // // imgSelectedButtons // this.imgSelectedButtons.ColorDepth = System.Windows.Forms.ColorDepth.Depth16Bit; this.imgSelectedButtons.ImageSize = new System.Drawing.Size(209, 29); this.imgSelectedButtons.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imgSelectedButtons.ImageStream"))); this.imgSelectedButtons.TransparentColor = System.Drawing.Color.Transparent; // // IrregularlyShapedForms // this.AutoScaleBaseSize = new System.Drawing.Size(5, 14); this.BackgroundImage = ((System.Drawing.Bitmap)(resources.GetObject("$this.BackgroundImage"))); this.ClientSize = new System.Drawing.Size(292, 266); this.Controls.AddRange(new System.Windows.Forms.Control[] { this.lblDrag, this.picFour, this.picThree, this.picOne, this.picTwo}); this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0))); this.Name = "IrregularlyShapedForms"; this.Text = "IrregularlyShapedForms"; this.Load += new System.EventHandler(this.IrregularlyShapedForms_Load); this.ResumeLayout(false); } #endregion /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { Application.Run(new IrregularlyShapedForms()); } private void IrregularlyShapedForms_Load(object sender, System.EventArgs e) { GraphicsPath path = new GraphicsPath(); path.AddEllipse(10, 50, this.Width - 20, this.Height - 60); this.Region = new Region(path); picOne.Image = imgNormalButtons.Images[0]; picTwo.Image = imgNormalButtons.Images[1]; picThree.Image = imgNormalButtons.Images[2]; picFour.Image = imgNormalButtons.Images[3]; } private void picFour_Click(object sender, System.EventArgs e) { this.Close(); } private void pic_MouseEnter(object sender, System.EventArgs e) { PictureBox pic = (PictureBox)sender; int imageIndex = int.Parse((pic.Tag.ToString())); pic.Image = imgSelectedButtons.Images[imageIndex]; } private void pic_MouseLeave(object sender, System.EventArgs e) { PictureBox pic = (PictureBox)sender; int imageIndex = int.Parse((pic.Tag.ToString())); pic.Image = imgNormalButtons.Images[imageIndex]; } private void pic_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { PictureBox pic = (PictureBox)sender; pic.Top += 2; pic.Left += 2; } private void pic_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e) { PictureBox pic = (PictureBox)sender; pic.Top -= 2; pic.Left -= 2; } private bool formDragging; private Point pointClicked; private void lblDrag_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { // Set drag mode on. formDragging = true; // Store the offset where the control was clicked. pointClicked = new Point(e.X, e.Y); } private void lblDrag_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e) { if (formDragging) { Point pointMoveTo; // Find the current mouse position in screen coordinates. pointMoveTo = this.PointToScreen(new Point(e.X, e.Y)); // Compensate for the position the control was clicked. pointMoveTo.Offset(-pointClicked.X, -pointClicked.Y); // Compensate for the non-client region (title bar). // This code is not necessary if you explicitly hide the title bar // by setting the form's BorderStyle to None. pointMoveTo.Offset(0, -25); // Move the form. this.Location = pointMoveTo; } } private void lblDrag_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e) { formDragging = false; } } IrregularlyShapedForms.zip( 164 k)