Malowanie po kratce i sczytywanie, które zostały zapalone

0

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.

user image

0

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.

0

możesz narysować te obiekty w WPF jako Path w Blendzie korzystając z łuków i linii
Potem zwyczajnie gdy najedziesz myszką dostaniesz eventy i zmieni się własność IsMouseOver

0

podświetlanie możesz zrobić na triggerach w xamlu a same kontrolki mogą podmienić checkboxy więc nie potrzebujesz ani jednej linii kodu do tego

1 użytkowników online, w tym zalogowanych: 0, gości: 1