Показать сообщение отдельно
  #6  
Старый 14.04.2010, 19:00
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Тебя обманули, не сложно. Есть только одно уточнение к вышепредложенному варианту. После того как мышь отпустили желательно пройтись по списку и исключить лишние координаты.
Вот примерно так будет:
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
 StartSelectArea := False;
end;

procedure TForm1.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 StartSelectArea := True;
 SetLength(SelectArea, 1);
 SelectArea[0] := Point(X,Y);
end;

procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
 if StartSelectArea
 then if (SelectArea[High(SelectArea)].X <> X) or (SelectArea[High(SelectArea)].Y <> Y)
      then begin
           SetLength(SelectArea, Length(SelectArea)+1);
           SelectArea[High(SelectArea)] := Point(X,Y);
           end;
end;

procedure TForm1.PaintBox1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 StartSelectArea := False;
 Image2.Canvas.Pen.Color := clRed;
 Image2.Canvas.Polygon(SelectArea);
end;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием