Is click inside a path

image_pdfimage_print


   


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;

public class Form1 : Form
{
        GraphicsPath path;

      public Form1() {
            InitializeComponent();
            
      }
    private void GraphicsPathHit_Paint(object sender, PaintEventArgs e)
    {
      e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
      path = new GraphicsPath();
      path.StartFigure();
      path.AddArc(10, 10, 100, 100, 20, 50);
      path.AddLine(20, 50, 70, 230);
      path.CloseFigure();
      path.AddEllipse(120, 50, 80, 80);
      e.Graphics.FillPath(Brushes.White, path);
      e.Graphics.DrawPath(Pens.Black, path);
    }

    private void GraphicsPathHit_MouseDown(object sender, MouseEventArgs e)
    {
      if (path.IsVisible(e.X, e.Y))
      {
        MessageBox.Show("You clicked inside the figure.");
      }
    }

    private void InitializeComponent()
    {
      this.SuspendLayout();
      // 
      // GraphicsPathHit
      // 
      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
      this.ClientSize = new System.Drawing.Size(292, 266);
      this.Name = "GraphicsPathHit";
      this.Text = "GraphicsPathHit";
      this.Paint += new System.Windows.Forms.PaintEventHandler(this.GraphicsPathHit_Paint);
      this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.GraphicsPathHit_MouseDown);
      this.ResumeLayout(false);

    }
      [STAThread]
      static void Main()
      {
        Application.EnableVisualStyles();
        Application.Run(new Form1());
      }

}


           
          


This entry was posted in 2D Graphics. Bookmark the permalink.