Графика
Пользователь хочет иметь возможность рисовать в программе простенькие изображения и иметь возможность двигать их по форме и масштабировать. Можно конечно предоставить пользователю возможность рисовать на компоненте Image через (LineTo, MoveTo и т.д.) Затем можно мышью двигать этот Image, но как я понимаю при масштабировании (растягивании Image) будет портиться качество рисунка сделанного пользователем.
Как решается эта задача может, есть какой-то специализированный компонент для облегчения работы с векторной графикой?[/SIZE]
а что мешает использовать не абсолютные координаты, а относительные?
И не проще рисовать прямо на форме?
Цитата: lena_ki
[SIZE=1]Есть следующая задача:
Пользователь хочет иметь возможность рисовать в программе простенькие изображения и иметь возможность двигать их по форме и масштабировать. Можно конечно предоставить пользователю возможность рисовать на компоненте Image через (LineTo, MoveTo и т.д.) Затем можно мышью двигать этот Image, но как я понимаю при масштабировании (растягивании Image) будет портиться качество рисунка сделанного пользователем.
Как решается эта задача может, есть какой-то специализированный компонент для облегчения работы с векторной графикой?[/SIZE]
Пользователь хочет иметь возможность рисовать в программе простенькие изображения и иметь возможность двигать их по форме и масштабировать. Можно конечно предоставить пользователю возможность рисовать на компоненте Image через (LineTo, MoveTo и т.д.) Затем можно мышью двигать этот Image, но как я понимаю при масштабировании (растягивании Image) будет портиться качество рисунка сделанного пользователем.
Как решается эта задача может, есть какой-то специализированный компонент для облегчения работы с векторной графикой?[/SIZE]
На счет специализированного компонента не знаю - возможно такой и существует. Но по сути ваша задача получить текущие координаты объекта - вовсе не играет роли будут они относительные или абсолютные - выполнить над ними необходимую операцию(перемещение, ротацию и т.д.) и перерисовать фигуру. Маштабирование для вектора именно так и делается.
есть квадрат с координатами (х1,у1) (х2,у2)
х1 = 0;
у1 = 0;
х2 = 100;
у2 = 100;
в нем есть линия с координатами (х3,у3) (х4,у4) => (0,0)(50,50)
где
х3 = х1;
у3 = у1;
х4 = х2*0.5
у4 = у2*0.5
т.е. привязывать "внутренние" объекты к родителю с помощъю коэффицентов.
тогда при OnMove или OnResize остается только перерисовать их
P.S.
Смотрела эти компоненты. Они существенно облегчают рисование, масштабирование и перемещение примитивов: http://tmssoftware.com/diagram.htm но мне удалось найти только старую версию за 2005 год без справки. Поэтому не смогла до конца разобраться с ними.
Есть (мною написаный) класс, который отображает многоугольники. Потомок TGraphControl, умеет изменять масштаб изображения и область отображения. Понимаю что не совсем то, но если надо пишите, поделюсь.