
26.09.2012, 04:40
|
 |
Профессионал
|
|
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
|
|
Цитата:
Сообщение от serenberg
Помогите пожалуйста!
в компонент timage загружена картинка
необходимо сделать аналог прямоугольного выделения фрагмента изображения (как в paint) линией и с запоминанием начальной и конечной точек координат данного выделения.
|
Пробуй так:
Код:
var
SelRect: TRect; // В эту переменную запоминаются координаты выделенного прямоугольника
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then
begin
SelRect := Rect(X, Y, X, Y);
Image1.Canvas.Pen.Style := psDashDot;
Image1.Canvas.Pen.Mode := pmNot;
Image1.Canvas.Brush.Style := bsClear;
end;
end;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if ssLeft in Shift then
begin
Image1.Canvas.Rectangle(SelRect);
SelRect.BottomRight := Point(X, Y);
Image1.Canvas.Rectangle(SelRect);
end;
end;
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then
begin
Image1.Canvas.Rectangle(SelRect);
SelRect.BottomRight := Point(X, Y);
Image1.Canvas.Pen.Style := psSolid;
Image1.Canvas.Pen.Mode := pmCopy;
Image1.Canvas.Rectangle(SelRect);
Image1.Canvas.Brush.Style := bsSolid;
end;
end;
|