Lasso - Freehand

Mar S oft

Lasso - Freehand

Post autor: Mar S oft »

Jak wykorzystać tą propozycje do wykorzystania techniki lasso. Mógłby ktoś mi pomóc to przerobić aby to chodziło na danym image1:

1. In the OnMouseDown event for the form
that you are 'lasso-ing' controls on:

bMarquee := True;
ptOrigin := Point(X,Y) ;
ptMove := Point(X,Y) ;

Pen.Color := clBlack;
Pen.Width := 1;
Pen.Śtyle := psDash;
Brush.Śtyle := bsClear;

DrawMarquee(ptOrigin, ptMove, pmNotXor ) ;

2. In the OnMouseMove event for the form...

if bMarquee = True then begin
DrawMarquee(ptOrigin, ptMove, pmNotXor) ;
DrawMarquee(ptOrigin, Point(X,Y), pmNotXor) ;
ptMove := Point(X, Y) ;
Canvas.Pen.Mode := pmCopy;
end;

3.
In the OnMouseUp event for the form...

if bMarquee = True then begin
bMarquee := False;
DrawMarquee(ptOrigin, Point(X,Y), pmNotXor) ;
ptMove := Point(X,Y) ;
end;

4. The DrawMarquee procedure...

procedure myForm.DrawMarquee
(mŚtart, mŚtop : TPoint; AMode : TPenMode) ;
begin
Canvas.Pen.Mode := AMode;
Canvas.Rectangle(mŚtart.X,mŚtart.Y,mŚtop.X,mŚtop.Y) ;
end;
~~~~~~~~~~~~~~~~~~~~~~~~~
Fibik
Użytkownik
Użytkownik
Posty: 953
Rejestracja: 27 wrz 2005, o 22:56
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 11 razy
Pomógł: 74 razy

Lasso - Freehand

Post autor: Fibik »

Można to przerabiać, ale za wiele tu nie ma.
Jest tylko jeden prostokąt - zawsze dwa punkty.

Przy lasso trzeba pamiętać całą ścieżkę, którą przejedzie mysz - liczba punktów nie jest znana i ciągle rośnie podczas zaznaczania.

Funkcję Rectangle zamieniamy na inną, rysującą dowolny wielokąt:
otwarty - gdy ciągniemy, oraz zamknięty - po zakończeniu zaznaczania.
marsoft
Użytkownik
Użytkownik
Posty: 64
Rejestracja: 17 kwie 2005, o 10:51
Płeć: Mężczyzna
Lokalizacja: Rzeszów
Podziękował: 3 razy

Lasso - Freehand

Post autor: marsoft »

Fibik pisze:Można to przerabiać, ale za wiele tu nie ma.
Mógłbyś to przelać na język np pod delphi - thx
ODPOWIEDZ