Форум: "Media";
Текущий архив: 2003.07.31;
Скачать: [xml.tar.bz2];
ВнизВыделение мышью фрагмента на Canvas Найти похожие ветки
← →
AlexOld (2003-04-07 11:16) [0]Уважаемые мастера, как сделать выделяющую рамку на изображении? Рисовал PolyLine с координатами от MouseMove. Есс-но, рисуются все рамки при перемещении мышки. Как оставить только последнюю, но чтобы был виден процесс перемещения рамки - как в графических редакторах. Заранее спасибо.
← →
jel (2003-04-07 11:24) [1]Рисуй сначала по старым координатам с XOR (стирание старой рамки) а потом по новым.
← →
AlexOld (2003-04-07 18:46) [2]jel, спасибо! Пока пробовал с NOTXOR, набрел на метод DrawFocusRect - все работает как надо. Только при движении мышки без нажатия клавиши по картинке бегут полосы - не смог их убрать. Код такой:
procedure TForm1.Image1MouseMove(Sender:...);
begin
//Стирание прежней рамки
Image1.Canvas.DrawFocusRect(R);
if (ssLeft in Shift) then
begin
if XStart<X
then begin R.Left:=XStart; R.Right:=X end
else begin R.Left:=X; R.Right:=XStart end;
if YStart<Y
then begin R.Top:=YStart; R.Bottom:=Y end
else begin R.Top:=Y; R.Bottom:=YStart end;
//Рисование новой рамки
Image1.Canvas.DrawFocusRect(R);
end;
end;
Может, подскажете, куда двигаться?
← →
Плохой человек (2003-04-07 21:20) [3]Поменяй на этот:
procedure TForm1.Image1MouseMove(Sender:...);
begin
if (ssLeft in Shift) then
begin
//Стирание прежней рамки
Image1.Canvas.DrawFocusRect(R);
if XStart<X
then begin R.Left:=XStart; R.Right:=X end
else begin R.Left:=X; R.Right:=XStart end;
if YStart<Y
then begin R.Top:=YStart; R.Bottom:=Y end
else begin R.Top:=Y; R.Bottom:=YStart end;
//Рисование новой рамки
Image1.Canvas.DrawFocusRect(R);
end;
end;
← →
AlexOld (2003-04-08 13:11) [4]Хороший Плохой человек!
Спасибо, все получилось!
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2003.07.31;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c