Mega Code Archive

 
Categories / C# / Event
 

Catch Mouse Click event inside a strange shape

using System;   using System.Drawing;   using System.Drawing.Drawing2D;   using System.Collections;   using System.ComponentModel;   using System.Windows.Forms;   using System.Data;   public class Form1 : System.Windows.Forms.Form   {     GraphicsPath myPath = new GraphicsPath();     private bool isImageClicked = false;     public Form1()     {       InitializeComponent();       myPath.StartFigure();       myPath.AddLine(new Point(150, 10), new Point(120, 150));       myPath.AddArc(200, 200, 100, 100, 0, 90);       Point[] points = {new Point(350, 325), new Point(250, 350), new Point(250, 250), new Point(350, 275)};       myPath.AddCurve(points);       myPath.CloseFigure();       CenterToScreen();     }     private void InitializeComponent()     {       this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);       this.ClientSize = new System.Drawing.Size(292, 273);       this.Text = "Form1";       this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseUp);       this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint);     }     static void Main()      {       Application.Run(new Form1());     }     private void Form1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)     {       Point mousePt = new Point(e.X, e.Y);                          if(myPath.IsVisible(mousePt))       {         isImageClicked = true;         this.Text = "You clicked the strange shape...";       } else {         isImageClicked = false;         this.Text = "Images";       }       Invalidate();     }     private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)     {       Graphics g = e.Graphics;       g.FillPath(Brushes.AliceBlue, myPath);       if(isImageClicked == true)       {         Pen outline = new Pen(Color.Black, 2);                 g.DrawPath(outline, myPath);       }     }   }