ciao ragazzi,
ho una form dove devo disegnare dei poligoni irregolari utilizzando graphics, brush, array di punti e compagnia bella.
Per quanto riguarda il disegno dei poligoni non ci sono problemi, delego tutto a una classe che si occupa del disegno (vi posto il codice così è più chiaro di mille parole):
codice:
using System.Data;
using System.Drawing;
...
namespace WindowsFormApplication1
{
public partial class Form1 : Form
{
public Graphics gPoligono;
public Class1 poligono1;
public Fotm1()
{
...
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
gPoligono = this.CreateGraphics();
Brush b = new SolidBrush(Color.Blue);
Point[] punti = new Point[]
{new Point(10, 10),
new Point(10, 100),
new Point(50, 65),
new Point(100, 120),
new Point(105, 40)};
poligono1 = new Class1(gPoligono, b, punti);
}
}
public class Class1
{
public Class1(Graphics poligono, Brush b, Point[] punti)
{
poligono.FillPolygon(b, punti);
}
}
}
in questo modo quando viene disegnata la Form1 viene anche creato l'oggetto poligono1 (istanza della classe Class1 che si occupa di disegnare il poligono sulla form). Come detto prima fino a qui nessun problema ma ora dovrei fare in modo che tutti i poligoni che vengono disegnati siano "cliccabili" dall'utente, cioè generino un evento al click del mouse su di essi (ipoteticamente nella Form1 doveri avere una cosa del tipo "poligono1_Click" che viene generato quando l'utente clicca sul poligono1) . Qualcuno saprebbe dirmi se è possibile fare una cosa del genere?
Dimenticavo: se fosse possibile vorrei evitare di usare i pictureBox perchè dovrò avere più poligoni irregolari adiacenti (quindi hanno dei lati in comune) e utilizzando delle pictureBox invece sarei vincolato ad avere dei contenitori rettangolari.
Spero di essere stato abbastanza chiaro.
Grazie!