Dzięki za poradę :) Doszedłem jeszcze do klasy GraphicsPath, która właśnie bardzo jest przydatna przy tego typu zabiegach. Zaznaczam w niej punkty (obszar, który ma być aktywny). I potem w zdarzeniu MouseClick w picturebox sprawdzam metodą IsVisible() czy klinąłem w tą 'aktywną' powierzchnię. Poniżej kod o którym mówię.
GraphicsPath gp = GraphicsPath();
Point[] punkty_prostokat = { new Point(0,0),
new Point(0,50),
new Point(50,50),
new Point(50,0)
};
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
gp.AddLines(punkty_prostokat);
}
private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
pictureBox1.Refresh();
if(gp.IsVisible(e.Location))
pictureBox1.Image = Properties.Resources._1;
}
}
Hmm, mam teraz pewien problem i cały czas się zastanawiam jak go rozwiązać, żeby było optymalnie i w miarę dynamicznie się to wszystko robiło (chodzi mi o to, żeby zapobiec pisaniu wieeelu ifów, które będą sprawdzały jaki aktualne jest zdjęcie w picturebox).
Mianowicie moim założeniem tego projektu jest to, abym mógł samochód pootwierać z każdej strony, mógł otworzyć bagażnik, maskę itd. Oczywiście na zdjęciach wcześniej zrobionych no i to już wiem jak zrobić.
Teraz pozostaje mi tylko kwestia tego, że praktycznie przy każdym zdjęciu będą musiały być inne 'aktywne powierzchnie' (tablice punktów lub coś takiego). No i problem zaczyna się, gdy muszę porównywać jaki obrazek jest aktualnie w pictureboxie i do niego wgrywać te nowe 'aktywne powierzchnie' i anulować stare.
Brak mi trochę pomysłu, oczywiście mogę to zrobić dziesiątkami ifów i przy każdym tworzenie nowych punktów ale chyba nie o to chodzi w programowaniu obiektowym, żeby robić wszystko tak na 'sztywno'.
Bardzo liczę na Wasze porady i sugestie! :)