21.09.2007, 12:52 | #1 |
Участник
|
"Резиновая нить" при рисовании на картинке
Здравствуйте , уважаемые коллеги !
Хочу спросить , реализовывал ли кто - нибудь метод рисования "Резиновой нити" в Аксапте . То есть жмякаешь на image левой кнопкой мыши , удерживая кнопку ведешь мышью до определенной точки , и по мере движения динамически перерисовывается прямоугольник который ты хочешь нарисовать . После отпускания кнопки , рисуется закрашенный прямоугольник . В винде я в давние времена делал это так : void CProgressBarPainter:rawTempProgressBar(){ CClientDC dc(GetView()); CPoint point = dc.SetWindowOrg(GetView()->GetScrollPosition( )); CPen pen,*selPen; pen.CreatePen(PS_SOLID,1,GetView()->GetProgressBarColor()); selPen = dc.SelectObject(&pen); dc.SetROP2(R2_NOT); CRect rect(m_initPoint.x,m_initPoint.y,m_currPoint.x,m_bottom_y_coord); dc.MoveTo(rect.left,rect.top); dc.LineTo(rect.right,rect.top ); dc.LineTo(rect.right,rect.bottom); dc.LineTo(rect.left,rect.bottom); pen.DeleteObject(); } Ключевыми здесь являются строки dc.SetROP2(R2_NOT) - инвертированный режим рисования . А вот как это делать в аксапте , с чего начать - не знаю Может кто-нибудь это уже реализовывал и поделится проектиком ? |
|
21.09.2007, 13:02 | #2 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: Asterisk (1). |
21.09.2007, 13:15 | #3 |
Участник
|
Спасибо . Буду разбираться с этим классом
|
|
21.09.2007, 13:32 | #4 |
Участник
|
только я поторопился
нет в Ax 30 sp 4 такого метода . Впрочем я полагаю что его по аналогии с другими методами в этом классе можно дописать ...
|
|
21.09.2007, 14:48 | #5 |
Участник
|
PS Если не ошибаюсь, для "резиновой нити" есть отдельный термин - "пендинг" (pending).
|
|
21.09.2007, 14:50 | #6 |
Участник
|
возможно
вообще это классика - как правило в любой книге по программированию в винде есть пример этого пендинга Разберусь с ним в Аксапте - выложу проект
|
|
25.09.2007, 12:18 | #7 |
Участник
|
реализовал
Добрались руки чтобы выложить простейший пример реализации резиновой нити в Аксапте . Надеюсь кому-то будет полезно в его рисовальческих изысках После выделения фигуры выполняется ее заливка . Тут тоже своя история . Есть форма tutorial_OCRTraining которая меня лично учит рисовать залитые черной краской прямоугольники . Так вот несмотря на то что они закрашиваются черной краской , эта закраска легко "стирается" паразитным окном . Да и вообще я столкнулся с тем что если окно "закрасить" используя winGDI.fillRect , то при достаточно большой картинке она начинает "осыпаться", то есть закрашенная ваши фигура через некоторое время пропадает . Поэтому решено было пойти другим , более топорным путем - расширить стандартный класс Image чтобы научить рисовать его прямоугольники и эллипсы .
|
|