Jak w C# w trybie okienkowym zrobić takie coś(jak na obrazku, tylko większe), że gdy przejedzie się nad kratkami z wciśniętą myszką to kratki się podświetlają i można sobie rysować, a potem można sczytać które zostały zapalone.
Nie jestem pewien, ale wydaje mi się że jest jakiś wzór na sprawdzanie punków na płaszczyźnie na podstawie kątów.
Sprawdź te linki:
http://www.math.uni.wroc.pl/~kasia/przestrzenna08/skrypt.pdf
http://pl.wikipedia.org/wiki/Przestrzeń_euklidesowa
http://www.math.put.poznan.pl/~grzesiak/W-GEO-g-analityczna.pdf
Jak będziesz miał wzór to wtedy mógłbyś sprawdzać położenie myszki, obliczać ćwiartkę koła w której kliknięto, a potem sprawdzać odległość od środka koła.
Jeśli chodzi o same te kawałeczki, to mógłbyś stworzyć obiekt o 4 polach:
public class SquarePiece
{
public int XBlizej {get; set;}
public int XDalej {get; set;}
public int YBlizej {get; set;}
public int YDalej {get; set;}
}
Każdy obiekt to odpowiedni kawałek koła.
Następnie zastosowałbym konstruktor który tworzył by ten obiekt obliczając w różnych pętlach wszystkie granice. Dodał funkcję do rysowania na nowo danego kawałka - używana była by gdybyś chciał sobie powiększyć to koło; oraz funkcję zmniejszającą koło.
Do tego stworzyłbym mechanizm wyświetlania tego koła: tak aby się od razu całe zmieniło, a nie kawałek po kawałku. Funkcja taka mogła by tak działać że tworzy jedną dużą bitmapę i do niej w pętli dodaje odpowiednio te kawałki, na końcu pętli następowało by wyświetlenie tej bitmapy.
EDIT:
Ewentualnie, zamiast tych wzorów, mógłbyś zrobić funkcję, która przelatywała by po wszystkich obiektach typu SquarePiece i sprawdzała według wymyślonego wzoru czy punkt myszki jest w danym obiekcie.
możesz narysować te obiekty w WPF jako Path
w Blend
zie korzystając z łuków i linii
Potem zwyczajnie gdy najedziesz myszką dostaniesz eventy i zmieni się własność IsMouseOver
podświetlanie możesz zrobić na triggerach w xaml
u a same kontrolki mogą podmienić checkboxy więc nie potrzebujesz ani jednej linii kodu do tego