| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Проблема с рисованием |
| Автор: clown 5.12.2005, 14:56 | ||||
| Добрый вечер. У меня возникла такая проблема… Я рисую линию на Image таким образом: кликаю мышю где-то на Image И тину линию туда, куда мне надо.
Проблема в том, что если под той линией которую я хочу нарисовать есть уже кокой-то рисунок, например круг зеленого цвета, то эта часть кода:
Зарисует белым цветом и этот круг((( Можно ли как-нибудь рисовать эту линию так чтоб рисунок что под ней не портился. Извините, если плохо описал свою проблему… Заранее благодарен |
| Автор: Abrek 6.12.2005, 16:18 |
| Попробуй использовать два Имейджа. Вводи то, что не должно затираться во второй Image(невидимый). И при каждом выводе на первый Image, вначале копируй на него рисунок из второго, а потом рисуй свою линию. При этом затирать предыдущую линию не надо - она затрется сама тем рисунком, который у тебя в буфере(втором Image). Если не понятно - пиши, пришлю код. Но лучше попробуй сам. |
| Автор: Vyacheslav 6.12.2005, 16:42 |
| Надо использовать другую моду для рисования резиновой линии. Если не ошибаюсь - pmMask и тогда повторное проведение той же линии тем же цветом просто сотрет ее |
| Автор: Гость_Амортизатор 6.12.2005, 18:36 |
| А вообще то не полагается так рисовать в обработчике. Отрисовывай всю картинку в обработчике WM_PAINT, затем при проведении новой линии заводи перемнную класса Line например (твоего), добавь его к остальным объектам (указатели на объекты можно хранить в TList). Затем обнови нужный прямоугольник InvalidateRect (Canvas->Handle, rect, false), где rect- прямоушольник, обрамляющий линию (находится из простых геометр. преобразований из толщины линии). Но лучше конечно в данном случае в самом деле поменять цвет таким образом, чтобы стереть при повторном проведении. |