Рисование в С++ Билдер 6 по рисунку
Есть image - простенькая сетка для удобства рисования.
Есть курсор.
Кликаем по buttonу и получаем возможность рисовать этим самым курсором.
Нарисовать нано ломанную кривую поверх начального image'a
Но это ещё не сё. Есть второй button кликаем по нему и получаем возможность выбирать на искомой ломаной точку.
Кроме того прога должна ругаться громким матом, если при попытке выбрать точку на кривой кликаем мимо кривой.
Кроме того желательна возможность сохранения/загрузки искомой кривой.
Кто нить что нить подобное реализовывал. Может у кого есть подобные сорцы... Или хотя бы идеи по реализации. Т.к. я рисованием в С++ не занимался совсем...
Язык: Borland С++ Builder 6
Заранее всем премного благодарен.
Есть следующая задача:
Есть image - простенькая сетка для удобства рисования.
Есть курсор.
Кликаем по buttonу и получаем возможность рисовать этим самым курсором.
Нарисовать нано ломанную кривую поверх начального image'a
Но это ещё не сё. Есть второй button кликаем по нему и получаем возможность выбирать на искомой ломаной точку.
Кроме того прога должна ругаться громким матом, если при попытке выбрать точку на кривой кликаем мимо кривой.
Кроме того желательна возможность сохранения/загрузки искомой кривой.
Кто нить что нить подобное реализовывал. Может у кого есть подобные сорцы... Или хотя бы идеи по реализации. Т.к. я рисованием в С++ не занимался совсем...
Язык: Borland С++ Builder 6
Заранее всем премного благодарен.
Создавай классы - начинать необходимо с точки - определяешь ее характеристики, кстати в борланде данный класс уже присутствует, можешь использовать его. Затем необходимо определить базовый класс, описывающий свойства общие для всех фигур и виртуальные функции, от которого наследуешь все остальные. Определяешь для каждой фигуры способ ее рисования, определяешь класс контейнер холста, способы задания координатной сетки, правила перерисовки, обновления,сохранения и извлечения данных из потока. Определяешь свой формат хранения или используешь наиболее подходящий. Ну еще пару сотен мелочей - разберешься по ходу...:)
З.Ы.
Но вообще, прежде чем браться за подобные проекты, стоит зайти в гугл и поискать литературу - существует целый ряд книг, подробно описывающих как работать с изображениями, что необходимо учитывать при проектировании подобных систем и т.п., благо объем инфы весьма и весьма не малый и описывать тебе все это в теме - дело крайне не благодарное.
Огромное спасибо за ответ.
В принципе мне приходилось реализовывать нечто подобное - но во первых, объем проекта не слишком маленький честно говоря, во вторых, даже я уже не помню с чего и какие решения я использовал - но программа работала довольно шустро. Для хранения параметров я использовал парадоксовскую базу - ну и начинал именно так. Самые большие бока у меня были кстати до тех пор, пока я не понял, что мало определить функцию рисования для нужных мен примитивов - необходимо определять контейнер холста обязательно - его обязаность - чтение и выгрузка изображения а также задачи связанные с координатной сеткой и перерисовкой.