Rysowanie po Windows Forms

0

Witam

Piszę program, który rysuje pewien wykres. Obraz tworzę przy pomocy klasy Graphics. Teraz chciałbym dodać możliwość zaznaczenia pewnego obszaru na tym wykresie (tak jak to wygląda choćby w Paintcie).

Chcę, by wyświetlał się prostokąt, zaczynający się w punkcie, w którym przycisnęliśmy lewy przycisk myszy, a kończący w obecnym położeniu kursora. Problem w tym, że po przesunięciu myszki, wciąż pozostają widoczne prostokąty narysowany przy poprzednim położeniu kursora. Nie mogę korzystać z metody Graphics.Clear, ponieważ ponowne generowanie wykresie zajmuje zbyt dużo czasu.

Czy ktoś może mi doradzić jak rozwiązać ten problem?

0

Nie mogę korzystać z metody Graphics.Clear, ponieważ ponowne generowanie wykresie zajmuje zbyt dużo czasu.
To nie generuj ponownie, tylko trzymaj wykres w pamięci w obiekcie Bitmap.

0
Azarien napisał(a):

Nie mogę korzystać z metody Graphics.Clear, ponieważ ponowne generowanie wykresie zajmuje zbyt dużo czasu.
To nie generuj ponownie, tylko trzymaj wykres w pamięci w obiekcie Bitmap.

Twoje rozwiązanie rozwiązuje problem, ale też generuje nowy: pamięć zużywana przez mój program skacze o kilkaset mega.

0

Może podziel to na warstwy - jedną niech będzie wykres rysowany raz, a na drugiej niech znajduje się wszystko, co zrobi
i zatwierdzi użytkownik, trzecia niech będzie do planowania - czyli do rysowania kwadratu i podczas ruchu myszki czyszczenie

  • rysowanie od nowa.

Zatwierdzenie elementu możesz realizować na co najmniej dwa sposoby: puszczenie myszki (automatyczna akceptacja)
lub zatwierdzanie poprzez jakiś button czy dialog. Jeśli zrobisz gumkę, to ma ona działać na drugiej warstwie.

Jeśli chcesz operować na tych obiektach to trzeba by tu coś innego zakombinować. Obiekt musiałby mieć jakieś parametry:
a) być strukturą i posiadać własną Bitmape;
b) być klasą i zawierać metodę w stylu Draw();
lub ewentualne mieszanki tego. Do parametrów możesz zaliczyć indeks lub powinieneś trzymać te obiekty w liście, żeby wiedzieć
w jakiej kolejności je potem rysować.

To są przykładowe rozwiązania, może sam uklecisz coś lepszego z tego.

0

A może to się przyda ?

http://support.microsoft.com/kb/314945

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