Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > графический редактор


Автор: Grig 26.12.2005, 12:05
Здравствуйте! Мне тут в задаче понадобилось что-то вроде графического редактора, и с первая проблема, с которой я столкнулся. Например надо нарисовать линию. Пользователь выбирает инструмент линию, щелкает на канвасе мышкой и перетаскивает мышку, куда ему вздумается:
Код

//сначала сотрем прошлую линию
PaintBox1.Canvas.Pen.Color:=clBtnFace ;
PaintBox1.Canvas.MoveTo(coor_x,coor_y);
PaintBox1.Canvas.LineTo(a,b);
//а теперь нарисуем новую
PaintBox1.Canvas.Pen.Color:=clblack;
PaintBox1.Canvas.MoveTo(coor_x,coor_y);
PaintBox1.Canvas.LineTo(x,y);
a:=x;
b:=y;


Вроде все удачненько. Но стоит пользователю начать рисовать вторую то при пересечении первой линии, она стирается из-за этой строчки:
Код

PaintBox1.Canvas.Pen.Color:=clBtnFace ;

Вот чешу репу, как можно этого избежать. Есть идея создавать динамический массив и постоянно его перерисовывать, но это ж гон. Может кто сталкивался и знает как это сделать? А то я тут наизобретаю велосипедов...

Автор: Snowy 26.12.2005, 12:19
Установи другой Pen.Mode. Например pmMerge или pmXor.
Рисуй тем же цветом - не меняй, а просто рисуй по оому же месту.
Для первого варианта стирай pmNotMerge, для второго тем же pmXor.

Автор: Grig 11.1.2006, 08:13
А может где-нибудь есть готовые исходники графического редактора?
Которые можно доработать и т.д... Кто знает?

Автор: VAVII 11.1.2006, 10:17
Если пишешь на Delphi, то в поставку с ней входит куча экзамплов!
Смотри в *Папка с Дельфей*\Demos\Doc\Graphex\!

Автор: Snowy 11.1.2006, 10:26
http://delphiworld.narod.ru/base/graphic_editor.html

Автор: Grig 12.1.2006, 05:51
O, ja, ja!! Kemska volost'!! Ja!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)