using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; public class Form1 : Form { private System.Windows.Forms.PictureBox PictureBox4; private System.Windows.Forms.PictureBox PictureBox2; private System.Windows.Forms.PictureBox PictureBox1; private System.Windows.Forms.PictureBox PictureBox3; public Form1() { InitializeComponent(); } private void InitializeComponent() { this.PictureBox4 = new System.Windows.Forms.PictureBox(); this.PictureBox2 = new System.Windows.Forms.PictureBox(); this.PictureBox1 = new System.Windows.Forms.PictureBox(); this.PictureBox3 = new System.Windows.Forms.PictureBox(); ((System.ComponentModel.ISupportInitialize)(this.PictureBox4)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.PictureBox2)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.PictureBox1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.PictureBox3)).BeginInit(); this.SuspendLayout(); // // PictureBox4 // this.PictureBox4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(128))))); this.PictureBox4.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; this.PictureBox4.Location = new System.Drawing.Point(156, 141); this.PictureBox4.Name = "PictureBox4"; this.PictureBox4.Size = new System.Drawing.Size(76, 76); this.PictureBox4.TabIndex = 14; this.PictureBox4.TabStop = false; // // PictureBox2 // this.PictureBox2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(128))))); this.PictureBox2.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; this.PictureBox2.Location = new System.Drawing.Point(60, 141); this.PictureBox2.Name = "PictureBox2"; this.PictureBox2.Size = new System.Drawing.Size(76, 76); this.PictureBox2.TabIndex = 13; this.PictureBox2.TabStop = false; // // PictureBox1 // this.PictureBox1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(128))))); this.PictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; this.PictureBox1.Location = new System.Drawing.Point(156, 49); this.PictureBox1.Name = "PictureBox1"; this.PictureBox1.Size = new System.Drawing.Size(76, 76); this.PictureBox1.TabIndex = 12; this.PictureBox1.TabStop = false; // // PictureBox3 // this.PictureBox3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(128))))); this.PictureBox3.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; this.PictureBox3.Location = new System.Drawing.Point(60, 49); this.PictureBox3.Name = "PictureBox3"; this.PictureBox3.Size = new System.Drawing.Size(76, 76); this.PictureBox3.TabIndex = 11; this.PictureBox3.TabStop = false; // // Holes // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(292, 266); this.Controls.Add(this.PictureBox4); this.Controls.Add(this.PictureBox2); this.Controls.Add(this.PictureBox1); this.Controls.Add(this.PictureBox3); this.Name = "Holes"; this.Text = "Holes"; this.TransparencyKey = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(128))))); ((System.ComponentModel.ISupportInitialize)(this.PictureBox4)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.PictureBox2)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.PictureBox1)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.PictureBox3)).EndInit(); this.ResumeLayout(false); } [STAThread] static void Main() { Application.EnableVisualStyles(); Application.Run(new Form1()); } }
Transparent window: set Opacity
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; public class Form1 : Form { private System.Windows.Forms.GroupBox GroupBox1; private System.Windows.Forms.Button cmdApply; private System.Windows.Forms.NumericUpDown udOpacity; private System.Windows.Forms.Label Label1; public Form1() { InitializeComponent(); } private void cmdApply_Click(object sender, EventArgs e) { this.Opacity = (double)udOpacity.Value / 100; } private void InitializeComponent() { this.GroupBox1 = new System.Windows.Forms.GroupBox(); this.cmdApply = new System.Windows.Forms.Button(); this.udOpacity = new System.Windows.Forms.NumericUpDown(); this.Label1 = new System.Windows.Forms.Label(); this.GroupBox1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.udOpacity)).BeginInit(); this.SuspendLayout(); // // GroupBox1 // this.GroupBox1.Controls.Add(this.cmdApply); this.GroupBox1.Controls.Add(this.udOpacity); this.GroupBox1.Controls.Add(this.Label1); this.GroupBox1.Location = new System.Drawing.Point(12, 89); this.GroupBox1.Name = "GroupBox1"; this.GroupBox1.Size = new System.Drawing.Size(268, 116); this.GroupBox1.TabIndex = 5; this.GroupBox1.TabStop = false; // // cmdApply // this.cmdApply.Location = new System.Drawing.Point(172, 64); this.cmdApply.Name = "cmdApply"; this.cmdApply.Size = new System.Drawing.Size(80, 24); this.cmdApply.TabIndex = 5; this.cmdApply.Text = "Apply"; this.cmdApply.Click += new System.EventHandler(this.cmdApply_Click); // // udOpacity // this.udOpacity.Increment = new decimal(new int[] { 5, 0, 0, 0}); this.udOpacity.Location = new System.Drawing.Point(88, 32); this.udOpacity.Name = "udOpacity"; this.udOpacity.Size = new System.Drawing.Size(48, 21); this.udOpacity.TabIndex = 4; this.udOpacity.Value = new decimal(new int[] { 50, 0, 0, 0}); // // Label1 // this.Label1.Location = new System.Drawing.Point(20, 36); this.Label1.Name = "Label1"; this.Label1.Size = new System.Drawing.Size(56, 16); this.Label1.TabIndex = 3; this.Label1.Text = "Opacity:"; // // Transparent // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(309, 289); this.Controls.Add(this.GroupBox1); this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.Name = "Transparent"; this.Text = "Transparent"; this.GroupBox1.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.udOpacity)).EndInit(); this.ResumeLayout(false); } [STAThread] static void Main() { Application.EnableVisualStyles(); Application.Run(new Form1()); } }
Transparent form window
using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; public class MainForm : System.Windows.Forms.Form { private System.ComponentModel.Container components; public MainForm() { InitializeComponent(); BackColor = Color.Tomato; Opacity = 0.5d; Text = "www.kutayzorlu.com/java2s/com"; Cursor = Cursors.WaitCursor; this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint); } protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } private void InitializeComponent() { this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(292, 273); this.Text = "Form1"; } [STAThread] static void Main() { Application.Run(new MainForm()); } private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) { Graphics g = e.Graphics; g.DrawString("www.kutayzorlu.com/java2s/com", new Font("Times New Roman", 20), new SolidBrush(Color.Black), 40, 10); } }
Transparent window and screen capture
/* GDI+ Programming in C# and VB .NET by Nick Symmonds Publisher: Apress ISBN: 159059035X */ using System.Drawing.Printing; using System.Runtime.InteropServices; using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; using System.Drawing.Text; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; namespace Clipper_c { /// <summary> /// Copyright Nicholas Symmonds 2002 /// This software is for instructional purposes only. /// It may not be sold as is. /// </summary> public class Clipper : System.Windows.Forms.Form { Bitmap bmp; NotifyIcon trayIcon = new NotifyIcon(); ContextMenu trayIconMenu = new ContextMenu(); private System.Windows.Forms.Button cmdCatch; private System.Windows.Forms.Button cmdQuit; /// <summary> /// Required designer variable. /// </summary> private System.ComponentModel.Container components = null; public Clipper() { InitializeComponent(); this.Icon = new Icon("icon.ico"); this.BackColor = Color.BlanchedAlmond; this.TransparencyKey = this.BackColor; this.cmdCatch.BackColor = Color.Tomato; this.cmdQuit.BackColor = Color.Tomato; trayIconMenu.MenuItems.Add("Catch", new EventHandler(this.cmdCatch_Click)); trayIconMenu.MenuItems.Add("Always On Top", new EventHandler(this.ClipperOnTop)); trayIconMenu.MenuItems.Add("Show", new EventHandler(this.Show_Main)); trayIconMenu.MenuItems.Add("Quit", new EventHandler(this.cmdQuit_Click)); trayIcon.Icon = new Icon("icon.ico"); trayIcon.Text = "Clipper - Screen Capture"; trayIcon.ContextMenu = trayIconMenu; trayIcon.Visible = true; this.ShowInTaskbar = false; } protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } if (bmp != null) bmp.Dispose(); trayIcon.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.cmdCatch = new System.Windows.Forms.Button(); this.cmdQuit = new System.Windows.Forms.Button(); this.SuspendLayout(); // // cmdCatch // this.cmdCatch.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; this.cmdCatch.Location = new System.Drawing.Point(16, 24); this.cmdCatch.Name = "cmdCatch"; this.cmdCatch.Size = new System.Drawing.Size(88, 32); this.cmdCatch.TabIndex = 0; this.cmdCatch.Text = "&Capture"; this.cmdCatch.Click += new System.EventHandler(this.cmdCatch_Click); // // cmdQuit // this.cmdQuit.Location = new System.Drawing.Point(144, 24); this.cmdQuit.Name = "cmdQuit"; this.cmdQuit.Size = new System.Drawing.Size(64, 32); this.cmdQuit.TabIndex = 1; this.cmdQuit.Text = "&Quit"; this.cmdQuit.Click += new System.EventHandler(this.cmdQuit_Click); // // Form1 // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(224, 75); this.Controls.AddRange(new System.Windows.Forms.Control[] { this.cmdQuit, this.cmdCatch}); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; this.MaximizeBox = false; this.Name = "Form1"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "Screen Capture"; this.Load += new System.EventHandler(this.Form1_Load); this.ResumeLayout(false); } #endregion [STAThread] static void Main() { Application.Run(new Clipper()); } private void Form1_Load(object sender, System.EventArgs e) { } protected override void OnResize(EventArgs e) { base.OnResize(e); if (this.WindowState == FormWindowState.Minimized) this.Opacity = 0; else this.Opacity = 1; } /// <summary> /// The desktop capture method makes this form invisible before /// showing the picture. Once the Save form has run this form becomes /// visible. Making this form invisible is done via the forms opacity. /// </summary> private void cmdCatch_Click(object sender, System.EventArgs e) { bmp = DeskTop.Capture(); //Make the form invisible this.Opacity = 0; dtBitmap bmpShow = new dtBitmap(bmp); bmp = bmpShow.GetBitmap; if (bmp != null) { frmSave frm = new frmSave(bmp); frm.ShowDialog(); } this.Opacity = 1; } private void cmdQuit_Click(object sender, System.EventArgs e) { trayIcon.Visible = false; this.Close(); } private void Show_Main(object sender, System.EventArgs e) { this.Visible = true; this.WindowState = FormWindowState.Normal; } private void ClipperOnTop(object sender, System.EventArgs e) { if ( trayIconMenu.MenuItems[1].Checked ) { trayIconMenu.MenuItems[1].Checked = false; this.TopMost = false; } else { trayIconMenu.MenuItems[1].Checked = true; this.TopMost = true; } } } /// <summary> /// Copyright Nicholas Symmonds 2002 /// This software is for instructional purposes only. /// It may not be sold as is. /// /// Allow the user to select a frame for the image before saving it. /// </summary> public class frmSave : System.Windows.Forms.Form { private PictureBox m_Pic; private Bitmap m_bmp; private Bitmap m_OriginalBmp; private PrintPreviewDialog Pv; private PageSetupDialog Ps; private PrintDocument Pd; private PrintDialog Pr; private Font FooterFont = new Font("Arial", 8); private int PrintCount = 0; private System.Windows.Forms.Panel P1; private System.Windows.Forms.MainMenu mainMenu1; private System.Windows.Forms.MenuItem mnuFile; private System.Windows.Forms.MenuItem mnuSave; private System.Windows.Forms.MenuItem mnuPrint; private System.Windows.Forms.MenuItem mnuClose; private System.Windows.Forms.MenuItem mnuPrintPreview; private System.Windows.Forms.MenuItem mnuPrintNow; private System.Windows.Forms.MenuItem NoMenu; private System.Windows.Forms.MenuItem mnuAttr; private System.Windows.Forms.MenuItem mnuBorder; private System.ComponentModel.Container components = null; public frmSave(Bitmap bmp) { InitializeComponent(); m_bmp = (Bitmap)bmp.Clone(); m_OriginalBmp = (Bitmap)bmp.Clone(); P1.BackgroundImage = GetPanelImage(); P1.Dock = DockStyle.Fill; m_Pic = new PictureBox(); m_Pic.BorderStyle = BorderStyle.None; m_Pic.SizeMode = PictureBoxSizeMode.AutoSize; m_Pic.Image = m_bmp; P1.Controls.Add(m_Pic); P1.Controls[0].Location = new Point(1, 1); //Set up the prnting Pv = new PrintPreviewDialog(); Ps = new PageSetupDialog(); Pr = new PrintDialog(); Pd = new PrintDocument(); Pd.DocumentName = "ScreenShot"; Pv.Document = Pd; Ps.Document = Pd; Pr.Document = Pd; Pd.BeginPrint += new PrintEventHandler(this.pd_BeginPrint); Pd.PrintPage += new PrintPageEventHandler(this.pd_Print); } protected override void Dispose( bool disposing ) { if( disposing ) { if(components != null) { components.Dispose(); } P1.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.P1 = new System.Windows.Forms.Panel(); this.mainMenu1 = new System.Windows.Forms.MainMenu(); this.mnuFile = new System.Windows.Forms.MenuItem(); this.mnuSave = new System.Windows.Forms.MenuItem(); this.mnuClose = new System.Windows.Forms.MenuItem(); this.NoMenu = new System.Windows.Forms.MenuItem(); this.mnuAttr = new System.Windows.Forms.MenuItem(); this.mnuBorder = new System.Windows.Forms.MenuItem(); this.mnuPrint = new System.Windows.Forms.MenuItem(); this.mnuPrintPreview = new System.Windows.Forms.MenuItem(); this.mnuPrintNow = new System.Windows.Forms.MenuItem(); this.SuspendLayout(); // // P1 // this.P1.AutoScroll = true; this.P1.BackColor = System.Drawing.SystemColors.Control; this.P1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; this.P1.Location = new System.Drawing.Point(8, 16); this.P1.Name = "P1"; this.P1.Size = new System.Drawing.Size(768, 520); this.P1.TabIndex = 0; // // mainMenu1 // this.mainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { this.mnuFile, this.NoMenu, this.mnuPrint}); // // mnuFile // this.mnuFile.Index = 0; this.mnuFile.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { this.mnuSave, this.mnuClose}); this.mnuFile.Text = "&File"; // // mnuSave // this.mnuSave.Index = 0; this.mnuSave.Text = "&Save"; this.mnuSave.Click += new System.EventHandler(this.mnuSave_Click); // // mnuClose // this.mnuClose.Index = 1; this.mnuClose.Text = "&Close"; this.mnuClose.Click += new System.EventHandler(this.mnuClose_Click); // // NoMenu // this.NoMenu.Index = 1; this.NoMenu.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { this.mnuAttr, this.mnuBorder}); this.NoMenu.Text = "&Attributes"; this.NoMenu.Click += new System.EventHandler(this.mnuAttr_Click); // // mnuAttr // this.mnuAttr.Index = 0; this.mnuAttr.Text = "Resolution"; this.mnuAttr.Click += new System.EventHandler(this.mnuAttr_Click); // // mnuBorder // this.mnuBorder.Index = 1; this.mnuBorder.Text = "Border"; this.mnuBorder.Click += new System.EventHandler(this.mnuBorder_Click); // // mnuPrint // this.mnuPrint.Index = 2; this.mnuPrint.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { this.mnuPrintPreview, this.mnuPrintNow}); this.mnuPrint.Text = "&Print"; // // mnuPrintPreview // this.mnuPrintPreview.Index = 0; this.mnuPrintPreview.Text = "Pre&view"; this.mnuPrintPreview.Click += new System.EventHandler(this.mnuPrintPreview_Click); // // mnuPrintNow // this.mnuPrintNow.Index = 1; this.mnuPrintNow.Text = "&Print"; this.mnuPrintNow.Click += new System.EventHandler(this.mnuPrintNow_Click); // // frmSave // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(792, 553); this.Controls.AddRange(new System.Windows.Forms.Control[] { this.P1}); this.Menu = this.mainMenu1; this.MinimizeBox = false; this.Name = "frmSave"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "Save Image"; this.Load += new System.EventHandler(this.frmSave_Load); this.ResumeLayout(false); } #endregion private void frmSave_Load(object sender, System.EventArgs e) { } /// <summary> /// This routine makes a blank image and colors it with a hatch brush /// This image is handed back to the caller who then uses this image as /// the background image for the panel. The panel will tile this image /// for as many times as it takes to fill the panel. /// </summary> private Image GetPanelImage() { Image i = new Bitmap(50, 50); using(Graphics G = Graphics.FromImage(i)) { //No need for high quality here. We need Speed!!! G.SmoothingMode = SmoothingMode.HighSpeed; Brush B = new HatchBrush(HatchStyle.Cross, Color.Cyan, Color.LightCyan); G.FillRectangle(B, 0, 0, i.Width, i.Height); } return i; } private void mnuAttr_Click(object sender, System.EventArgs e) { Attributes frm = new Attributes(m_bmp.HorizontalResolution, m_bmp.Size); frm.ShowDialog(); m_bmp.SetResolution(frm.SaveRes, frm.SaveRes); } private void mnuClose_Click(object sender, System.EventArgs e) { this.Close(); } private void mnuSave_Click(object sender, System.EventArgs e) { SaveFileDialog sd = new SaveFileDialog(); sd.Filter = "Bitmap (*.bmp)|*.bmp|" + "JPEG (*.jpg)|*.jpg|" + "GIF (*.Gif)|*.gif|" + "TIFF (*.tif)|*.tif|" + "PNG (*.png)|*.png|" + "EMF (*.emf)|*.emf" ; sd.FilterIndex = 1 ; sd.RestoreDirectory = true ; sd.AddExtension = true; if(sd.ShowDialog() == DialogResult.OK) { if (sd.FileName.Length != 0) { switch(sd.FilterIndex) { case 1: //Save as bitmap m_bmp.Save(sd.FileName, ImageFormat.Bmp); break; case 2: //Save as JPEG m_bmp.Save(sd.FileName, ImageFormat.Jpeg); break; case 3: //Save as GIF m_bmp.Save(sd.FileName, ImageFormat.Gif); break; case 4: //Save as TIFF m_bmp.Save(sd.FileName, ImageFormat.Tiff); break; case 5: //Save as PNG m_bmp.Save(sd.FileName, ImageFormat.Png); break; case 6: //Save as EMF m_bmp.Save(sd.FileName, ImageFormat.Emf); break; default: break; } } } } #region Printer routines private void pd_BeginPrint ( object sender, PrintEventArgs e) { Pd.DocumentName = "ScreenShot " + (++PrintCount).ToString(); } private void pd_Print(object sender, PrintPageEventArgs e) { Graphics G = e.Graphics; float LeftMargin = e.MarginBounds.Left; float TopMargin = e.MarginBounds.Top; float BottomMargin = e.MarginBounds.Bottom; StringFormat sf = new StringFormat(); sf.Alignment = StringAlignment.Far; sf.LineAlignment = StringAlignment.Center; Rectangle Border = e.MarginBounds; Border.Inflate(1, 1); RectangleF Footer = new Rectangle(e.MarginBounds.Left, e.MarginBounds.Bottom, e.MarginBounds.Width, e.PageBounds.Bottom - e.MarginBounds.Bottom); //Type in the footer G.DrawString(Pd.DocumentName, FooterFont, Brushes.Black, Footer, sf); sf.Alignment = StringAlignment.Near; G.DrawString(DateTime.Now.ToLongDateString(), FooterFont, Brushes.Black, Footer, sf); //Draw the rectangle and the image. Image is stretched to fit!!! G.DrawRectangle(Pens.Black, Border); G.DrawImage(m_bmp, e.MarginBounds); sf.Dispose(); } private void mnuPrintPreview_Click(object sender, System.EventArgs e) { Pv.WindowState = FormWindowState.Maximized; Pv.ShowDialog(); } private void mnuPrintNow_Click(object sender, System.EventArgs e) { if (Pr.ShowDialog() == DialogResult.OK) Pd.Print(); } #endregion private void mnuBorder_Click(object sender, System.EventArgs e) { if (!mnuBorder.Checked) { using (Graphics G = Graphics.FromImage(m_bmp)) { using (Pen P = new Pen(Brushes.Black, 2)) { G.DrawRectangle(P, new Rectangle(0, 0, m_bmp.Size.Width, m_bmp.Size.Height)); m_Pic.Image = m_bmp; mnuBorder.Checked = true; } } } else { m_bmp = (Bitmap)m_OriginalBmp.Clone(); m_Pic.Image = m_bmp; mnuBorder.Checked = false; } } } /// <summary> /// Copyright Nicholas Symmonds 2002 /// This software is for instructional purposes only. /// It may not be sold as is. /// /// This form is the one that holds the complete bitmap of the screen. /// The border is set to nothing and the form is maximized. The cursor /// is also changed to tell the user (s)he can now drag a line and make /// a capture box. When the screen is captured this form shows up almost /// immediately. /// </summary> public class dtBitmap : Form { #region Class local storage private Bitmap bmp; private Rectangle InvalidRect = Rectangle.Empty; private Pen mRectPen; private Corectangle mbmpRect; #endregion public dtBitmap(Bitmap b) { mbmpRect = new Corectangle(); mRectPen = new Pen(Brushes.Red, 1); mRectPen.DashStyle = DashStyle.DashDot; bmp = b.Clone(new RectangleF(0, 0, b.Width, b.Height), b.PixelFormat); this.SetStyle(ControlStyles.AllPaintingInWmPaint,true); this.SetStyle(ControlStyles.DoubleBuffer,true); this.Size = bmp.Size; this.FormBorderStyle = FormBorderStyle.None; this.MaximizeBox = false; this.MinimizeBox = false; this.Cursor = new Cursor("hcross.cur"); this.BackgroundImage = bmp; //Show as modal this.ShowDialog(); } private void InitializeComponent() { // // dtBitmap // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(292, 273); this.Name = "dtBitmap"; this.Load += new System.EventHandler(this.dtBitmap_Load); } protected override void Dispose( bool disposing ) { if( disposing ) { if (bmp != null) bmp.Dispose(); } base.Dispose( disposing ); } public Bitmap GetBitmap { get{return bmp;} } private void dtBitmap_Load(object sender, System.EventArgs e) { } protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); e.Graphics.DrawRectangle(mRectPen, mbmpRect.Rect); } #region Squeek protected override void OnMouseDown(MouseEventArgs e) { base.OnMouseDown(e); if (e.Button != MouseButtons.Left) return; mbmpRect = new Corectangle(e.X, e.Y); } protected override void OnMouseUp(MouseEventArgs e) { base.OnMouseUp(e); Invalidate(); bmp = bmp.Clone(mbmpRect.Rect, bmp.PixelFormat); this.Close(); } protected override void OnMouseMove(MouseEventArgs e) { base.OnMouseMove(e); if (e.Button != MouseButtons.Left) return; mbmpRect.EndX = e.X; mbmpRect.EndY = e.Y; Invalidate(); } #endregion } /// <summary> /// Copyright Nicholas Symmonds 2002 /// This software is for instructional purposes only. /// It may not be sold as is. /// /// This class encapsulates the API functions necessary to get the /// desktop image and form a bitmap from it. /// Not everything can be done in GDI+ 🙂 /// </summary> public sealed class DeskTop { [DllImport("user32.dll")] internal extern static IntPtr GetDesktopWindow(); [DllImport("user32.dll")] internal extern static IntPtr GetDC( IntPtr windowHandle ); [DllImport("gdi32.dll")] internal extern static IntPtr GetCurrentObject( IntPtr hdc, ushort objectType ); [DllImport("user32.dll")] internal extern static void ReleaseDC( IntPtr hdc ); [DllImport("user32.dll")] internal extern static void UpdateWindow( IntPtr hwnd ); public static Bitmap Capture() { //Get a pointer to the desktop window IntPtr desktopWindow = GetDesktopWindow(); //Get a device context from the desktop window IntPtr desktopDC = GetDC( desktopWindow ); //Get a GDI handle to the image IntPtr desktopBitmap = GetCurrentObject( desktopDC, 7 ); //This call takes as an argument the handle to a GDI image Bitmap desktopImage = Image.FromHbitmap( desktopBitmap ); //Do not create any memory leaks ReleaseDC( desktopDC ); return desktopImage; } } /// <summary> /// This class takes any starting point and any ending point /// structures and makes a rectangle. Using this class you can use the mouse /// to draw a rectangle on the screen from any starting point to any ending /// point. You cannot do this with a regular rectangle. /// </summary> public class Corectangle { #region Class Local Variables private Point mStart; private Point mEnd; private Point mRealStart; private Point mRealEnd; private Size mRealSize; private Rectangle mRect; #endregion public Corectangle(int X, int Y) { mStart = Point.Empty; mEnd = Point.Empty; mRealStart = Point.Empty; mRealEnd = Point.Empty; mRealSize = Size.Empty; mStart.X = X; mStart.Y = Y; mRealStart.X = X; mRealStart.Y = Y; mRect = Rectangle.Empty; } public Corectangle() { mStart = Point.Empty; mEnd = Point.Empty; mRealStart = Point.Empty; mRealEnd = Point.Empty; mRealSize = Size.Empty; mStart.X = 0; mStart.Y = 0; mRealStart.X = 0; mRealStart.Y = 0; mRect = Rectangle.Empty; } /// <summary> /// Ending X Value of rectangle /// </summary> public int EndX { set{ mEnd.X = value; } } /// <summary> /// Ending Y Value of rectangle /// </summary> public int EndY { set{ mEnd.Y = value; } } /// <summary> /// Get the corrected rectangle /// </summary> public Rectangle Rect { get { MakeReal(); mRect.Location = mRealStart; mRect.Size = mRealSize; return mRect; } } private void MakeReal() { //Started top left, ended bottom right if (mEnd.X > mStart.X && mEnd.Y > mStart.Y) { mRealStart = mStart; mRealEnd = mEnd; mRealSize = new Size(mRealEnd.X-mRealStart.X, mRealEnd.Y-mRealStart.Y); return; } //Started bottom right, ended top left if (mEnd.X < mStart.X && mEnd.Y < mStart.Y) { mRealEnd = mStart; mRealStart = mEnd; mRealSize = new Size(mRealEnd.X-mRealStart.X, mRealEnd.Y-mRealStart.Y); return; } //Started top right left, ended bottom left if (mEnd.X < mStart.X && mEnd.Y > mStart.Y) { mRealStart.X = mEnd.X; mRealStart.Y = mStart.Y; mRealEnd.X = mStart.X; mRealEnd.Y = mEnd.Y; mRealSize = new Size(mRealEnd.X-mRealStart.X, mRealEnd.Y-mRealStart.Y); return; } //Started bottom left, ended top right if (mEnd.X > mStart.X && mEnd.Y < mStart.Y) { mRealStart.X = mStart.X; mRealStart.Y = mEnd.Y; mRealEnd.X = mEnd.X; mRealEnd.Y = mStart.Y; mRealSize = new Size(mRealEnd.X-mRealStart.X, mRealEnd.Y-mRealStart.Y); return; } } } /// <summary> /// Summary description for Attributes. /// </summary> public class Attributes : System.Windows.Forms.Form { private float m_Res; private System.Windows.Forms.Label lblCurrentRes; private System.Windows.Forms.Label lblRes; private System.Windows.Forms.Button cmdOK; private System.Windows.Forms.GroupBox groupBox1; private System.Windows.Forms.RadioButton optCurrent; private System.Windows.Forms.RadioButton opt120; private System.Windows.Forms.RadioButton opt150; private System.Windows.Forms.RadioButton opt300; private System.Windows.Forms.Label lblSize; private System.Windows.Forms.Label lblSizeVal; /// <summary> /// Required designer variable. /// </summary> private System.ComponentModel.Container components = null; public Attributes(float CurrentResolution, Size sz) { InitializeComponent(); m_Res = CurrentResolution; lblRes.Text = m_Res.ToString() + " DPI"; lblSizeVal.Text = sz.Width.ToString() + "w X " + sz.Height.ToString() + "h"; optCurrent.Checked = true; this.Opacity = 1.0; } /// <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.lblCurrentRes = new System.Windows.Forms.Label(); this.lblRes = new System.Windows.Forms.Label(); this.cmdOK = new System.Windows.Forms.Button(); this.groupBox1 = new System.Windows.Forms.GroupBox(); this.opt300 = new System.Windows.Forms.RadioButton(); this.opt150 = new System.Windows.Forms.RadioButton(); this.opt120 = new System.Windows.Forms.RadioButton(); this.optCurrent = new System.Windows.Forms.RadioButton(); this.lblSize = new System.Windows.Forms.Label(); this.lblSizeVal = new System.Windows.Forms.Label(); this.groupBox1.SuspendLayout(); this.SuspendLayout(); // // lblCurrentRes // this.lblCurrentRes.Location = new System.Drawing.Point(24, 16); this.lblCurrentRes.Name = "lblCurrentRes"; this.lblCurrentRes.Size = new System.Drawing.Size(160, 16); this.lblCurrentRes.TabIndex = 0; this.lblCurrentRes.Text = "Current Resolution"; // // lblRes // this.lblRes.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; this.lblRes.Location = new System.Drawing.Point(24, 32); this.lblRes.Name = "lblRes"; this.lblRes.Size = new System.Drawing.Size(152, 16); this.lblRes.TabIndex = 1; // // cmdOK // this.cmdOK.Location = new System.Drawing.Point(232, 160); this.cmdOK.Name = "cmdOK"; this.cmdOK.Size = new System.Drawing.Size(48, 32); this.cmdOK.TabIndex = 2; this.cmdOK.Text = "OK"; this.cmdOK.Click += new System.EventHandler(this.cmdOK_Click); // // groupBox1 // this.groupBox1.Controls.AddRange(new System.Windows.Forms.Control[] { this.opt300, this.opt150, this.opt120, this.optCurrent}); this.groupBox1.Location = new System.Drawing.Point(24, 64); this.groupBox1.Name = "groupBox1"; this.groupBox1.Size = new System.Drawing.Size(168, 128); this.groupBox1.TabIndex = 3; this.groupBox1.TabStop = false; this.groupBox1.Text = "Save Resolution"; // // opt300 // this.opt300.Location = new System.Drawing.Point(16, 96); this.opt300.Name = "opt300"; this.opt300.Size = new System.Drawing.Size(104, 16); this.opt300.TabIndex = 3; this.opt300.Text = "300 DPI"; // // opt150 // this.opt150.Location = new System.Drawing.Point(16, 72); this.opt150.Name = "opt150"; this.opt150.Size = new System.Drawing.Size(104, 16); this.opt150.TabIndex = 2; this.opt150.Text = "150 DPI"; // // opt120 // this.opt120.Location = new System.Drawing.Point(16, 48); this.opt120.Name = "opt120"; this.opt120.Size = new System.Drawing.Size(104, 16); this.opt120.TabIndex = 1; this.opt120.Text = "120 DPI"; // // optCurrent // this.optCurrent.Location = new System.Drawing.Point(16, 24); this.optCurrent.Name = "optCurrent"; this.optCurrent.Size = new System.Drawing.Size(104, 16); this.optCurrent.TabIndex = 0; this.optCurrent.Text = "Current"; // // lblSize // this.lblSize.Location = new System.Drawing.Point(192, 16); this.lblSize.Name = "lblSize"; this.lblSize.Size = new System.Drawing.Size(88, 16); this.lblSize.TabIndex = 4; this.lblSize.Text = "Size"; // // lblSizeVal // this.lblSizeVal.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; this.lblSizeVal.Location = new System.Drawing.Point(192, 32); this.lblSizeVal.Name = "lblSizeVal"; this.lblSizeVal.Size = new System.Drawing.Size(88, 16); this.lblSizeVal.TabIndex = 5; // // Attributes // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(294, 205); this.Controls.AddRange(new System.Windows.Forms.Control[] { this.lblSizeVal, this.lblSize, this.groupBox1, this.cmdOK, this.lblRes, this.lblCurrentRes}); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; this.MaximizeBox = false; this.MinimizeBox = false; this.Name = "Attributes"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; this.Text = "Attributes"; this.Load += new System.EventHandler(this.Attributes_Load); this.groupBox1.ResumeLayout(false); this.ResumeLayout(false); } #endregion private void Attributes_Load(object sender, System.EventArgs e) { } public float SaveRes { get{ return m_Res; } } private void cmdOK_Click(object sender, System.EventArgs e) { if (opt120.Checked) m_Res = 120f; if (opt150.Checked) m_Res = 150f; if (opt300.Checked) m_Res = 300f; this.Close(); } } } Clipper-c.zip( 72 k)
Irregularly Shaped Forms demo 1
/* 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)
Irregularly Shaped Forms Demo
/* 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.Drawing.Drawing2D; namespace IrregularlyShapedForms { /// <summary> /// Summary description for IrregularlyShapedForms2. /// </summary> public class IrregularlyShapedForms2 : System.Windows.Forms.Form { internal System.Windows.Forms.Button Button1; /// <summary> /// Required designer variable. /// </summary> private System.ComponentModel.Container components = null; public IrregularlyShapedForms2() { // // 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.Button1 = new System.Windows.Forms.Button(); this.SuspendLayout(); // // Button1 // this.Button1.Location = new System.Drawing.Point(20, 24); this.Button1.Name = "Button1"; this.Button1.Size = new System.Drawing.Size(136, 36); this.Button1.TabIndex = 1; this.Button1.Text = "Button1"; // // IrregularlyShapedForms2 // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(292, 266); this.Controls.AddRange(new System.Windows.Forms.Control[] { this.Button1}); this.Name = "IrregularlyShapedForms2"; this.Text = "Shaped Form"; this.Load += new System.EventHandler(this.IrregularlyShapedForms2_Load); this.ResumeLayout(false); } #endregion [STAThread] static void Main() { Application.Run(new IrregularlyShapedForms2()); } private void IrregularlyShapedForms2_Load(object sender, System.EventArgs e) { GraphicsPath path = new GraphicsPath(); path.AddEllipse(0, 0, this.Width / 2, this.Height / 2); path.AddRectangle(new Rectangle(this.Width / 2, this.Top / 2, this.Width / 2, this.Top / 2)); path.AddEllipse(this.Width / 2, this.Height / 2, this.Width / 2, this.Height / 2); this.Region = new Region(path); } } }
Transparent Forms
/* 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; namespace TransparentForms { /// <summary> /// Summary description for Form2. /// </summary> public class Transparent : System.Windows.Forms.Form { internal System.Windows.Forms.GroupBox GroupBox1; internal System.Windows.Forms.Button cmdApply; internal System.Windows.Forms.NumericUpDown udOpacity; internal System.Windows.Forms.Label Label1; /// <summary> /// Required designer variable. /// </summary> private System.ComponentModel.Container components = null; public Transparent() { // // 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.GroupBox1 = new System.Windows.Forms.GroupBox(); this.cmdApply = new System.Windows.Forms.Button(); this.udOpacity = new System.Windows.Forms.NumericUpDown(); this.Label1 = new System.Windows.Forms.Label(); this.GroupBox1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.udOpacity)).BeginInit(); this.SuspendLayout(); // // GroupBox1 // this.GroupBox1.Controls.AddRange(new System.Windows.Forms.Control[] { this.cmdApply, this.udOpacity, this.Label1}); this.GroupBox1.Location = new System.Drawing.Point(12, 75); this.GroupBox1.Name = "GroupBox1"; this.GroupBox1.Size = new System.Drawing.Size(268, 116); this.GroupBox1.TabIndex = 4; this.GroupBox1.TabStop = false; // // cmdApply // this.cmdApply.Location = new System.Drawing.Point(172, 64); this.cmdApply.Name = "cmdApply"; this.cmdApply.Size = new System.Drawing.Size(80, 24); this.cmdApply.TabIndex = 5; this.cmdApply.Text = "Apply"; this.cmdApply.Click += new System.EventHandler(this.cmdApply_Click); // // udOpacity // this.udOpacity.Increment = new System.Decimal(new int[] { 5, 0, 0, 0}); this.udOpacity.Location = new System.Drawing.Point(88, 32); this.udOpacity.Name = "udOpacity"; this.udOpacity.Size = new System.Drawing.Size(48, 21); this.udOpacity.TabIndex = 4; this.udOpacity.Value = new System.Decimal(new int[] { 50, 0, 0, 0}); // // Label1 // this.Label1.Location = new System.Drawing.Point(20, 36); this.Label1.Name = "Label1"; this.Label1.Size = new System.Drawing.Size(56, 16); this.Label1.TabIndex = 3; this.Label1.Text = "Opacity:"; // // Form2 // this.AutoScaleBaseSize = new System.Drawing.Size(5, 14); this.ClientSize = new System.Drawing.Size(292, 266); this.Controls.AddRange(new System.Windows.Forms.Control[] { this.GroupBox1}); this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0))); this.Name = "Form2"; this.Text = "A Transparent Form"; this.GroupBox1.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.udOpacity)).EndInit(); this.ResumeLayout(false); } #endregion private void cmdApply_Click(object sender, System.EventArgs e) { this.Opacity = (double)udOpacity.Value / 100; } [STAThread] static void Main() { Application.Run(new Transparent()); } } }