Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/30: Рейтинг темы: голосов - 30, средняя оценка - 4.57
Ms.Dos
1

Векторные изображения

07.01.2011, 21:46. Показов 5753. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток! Не поможете ли вы мне с решением проблемы: каким образом в Builder C++ можно работать с векторной графикой?
Задача такова, чтобы загружать векторное изображение, рисовать на нем всякие штуки, увеличивать и т.д.
И с какими форматами лучше работать?
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.01.2011, 21:46
Ответы с готовыми решениями:

Отрисовка изображения поверх канвы (изображения) и вращение изображения
Здравствуйте. Столкнулся с 2умя проблемами при работе с изображениями средствами C++ Builder....

Загрузка изображения в Image с сохранении соотношения сторон изображения
загрузка изображения в Image(с фиксированным размером) при этом изображение должно сохранить...

Изменение яркости контрастности изображения. Бинаризация изображения
Товарищи программисты помогите с разработкой алкоритма для изменеие яркости контрастности...

VGA монитор и векторные изображения
Добрый день. Начал работать в программе adobe illustrator, после выполнения работы столкнулся с...

7
0 / 0 / 0
Регистрация: 04.03.2010
Сообщений: 3
16.03.2011, 08:24 2
Так же интересует этот вопрос. Как работать с векторным изображением?
Хочу перевести jpeg-изображение в векторное изображение, а затем использовать в программе (работа с картой местности).
0
LK
Заблокирован
16.03.2011, 11:45 3
Некоторые сведения.
Графические файлы Microsoft Metafile поначалу были задуманы как внутренний векторный формат операционных систем Windows. В ранних версиях использовались файлы с расширением .wmf (Windows 3.1 MetaFile). Новые операционные системы используют более современный формат Win32 Enhanced Metafile (расширение .emf). Формат Metafile оказался настолько удачным, что в последние годы используется как стандарт для обмена графической информацией в компьютерных сетях. Помимо стандартной шапки файлы типа Metafile состоят из записей переменной длины — упакованных команд обращения к графическим процедурам GDI. В первом слове такой записи хранится ее длина. Во втором слове — порядковый номер функции GDI. В последующих словах в машинном формате заданы аргументы функции. Распаковка и интерпретация этой информации связана с дополнительными затратами машинного времени, однако масштабирование и повороты векторных изображений выполняются без искажений. С помощью методов канвы содержимое метафайлов может быть превращено в растровое изображение на видимых компонентах или формах. Обратная операция по преобразованию растрового изображения в векторное стандартными средствами C++ Builder не поддерживается. Это — довольно трудная задача, относящаяся к теории распознавания образов.

Объекты типа TMetafile обладают рядом специфических свойств. Во-первых, помимо описания собственно графического изображения в файл можно включить текстовый комментарий (свойство Description) и указать его создателей (свойство CreatedBy). Для повышения точности воспроизведения кроме обычных параметров типа Width и Height, задающих ширину и высоту в пикселах, здесь присутствуют аналогичные характеристики в сотых долях миллиметра (свойства MMWidth и MMHeight). Еще одно свойство Inch определяет количество шагов в дюйме. Если в качестве единицы длины в метафайле были использованы твипсы, то Inch=1440. Эти параметры более уместны при воспроизведении графических объектов на прецизионных плоттерах.

Свойство Transparent=true обеспечивает воспроизведение рисунка с прозрачным фоном. Под таким рисунком просвечивает фон принимающего объекта с ранее созданным изображением.

Объекты типа TPicture.

Объекты типа TPicture выступают в роли универсальных графических контейнеров, в которые можно загружать растровые изображения в форматах .bmp и .ico или векторные изображения — метафайлы. Таким образом один объект типа TPicture может выступать в программе и как TBitmap, и как Ticon, и как TMetafile. Для создания объекта типа TPicture используют оператор new:
C++
1
TPicture *pic1=new TPicture;
В созданный таким образом объект мы можем загрузить графический файл любого формата:
C++
1
2
3
pic1®LoadFromFile("c:\\windows\\teach.ico");
pic1®LoadFromFile("c:\\windows\\ОБЛАКА.bmp");
pic1®LoadFromFile("c:\\windows\\system\\spbanner.wmf");
Для отображения загруженной картинки в левом верхнем углу формы можно воспользоваться методом Draw, указав в качестве его третьего аргумента обобщенное имя графического объекта:
C++
1
Canvas®Draw(0,0,pic1®Graphic);
Независимо от типа загруженного изображения программа копирования разберется с графическим форматом рисунка и правильно воспроизведет его. Однако, загрузку и отображение растрового рисунка в формате .bmp, например, можно выполнить и по-другому, воспользовавшись свойством Bitmap:
C++
1
2
pic1->Bitmap->LoadFromFile("c:\\windows\\ОБЛАКА.bmp");
Canvas->Draw(0,0,pic1->Bitmap);
Для других графических файлов пригодятся имена типа pic1->Icon или pic1->Metafile. Попытка загрузить файл неподобающего формата по такому конкретному имени приведет к аварийной ситуации.

Объекты типа TPicture могут использоваться в процедурах копирования Draw и StretchDraw или участвовать в обменах с Clipboard.
Разработка элемента управления для отображения векторных карт
Для начала - достаточно.
1
0 / 0 / 0
Регистрация: 04.03.2010
Сообщений: 3
16.03.2011, 12:02 4
Спасибо! Ту ссылку я изучил. Но, к сожалению, ничего интересного для себя не нашел Кроме того, что C++ Builder нельзя использовать для написания коммерческих приложений.
0
LK
Заблокирован
16.03.2011, 12:05 5
Цитата Сообщение от xucc Посмотреть сообщение
1. Но, к сожалению, ничего интересного для себя не нашел
2. C++ Builder нельзя использовать для написания коммерческих приложений.
1. Кто знает, какие у вас интересы .
2. Это не верно.
0
Покинул форум
3187 / 1366 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
16.03.2011, 13:24 6
Цитата Сообщение от xucc Посмотреть сообщение
Кроме того, что C++ Builder нельзя использовать для написания коммерческих приложений
Честно купленный - можно.
0
0 / 0 / 0
Регистрация: 04.03.2010
Сообщений: 3
16.03.2011, 17:35 7
Цитата Сообщение от LK Посмотреть сообщение
1. Кто знает, какие у вас интересы .
Меня интересует конкретные примеры работы с векторными изображениями. Я имею ввиду, код на C++ (желательно в Builder'e). А примеры кода такие, как масштабирование, перемещение увеличенных областей и т.д. Примеры я нахожу, пишу свое,и все же продолжаю искать.
Кроме того ,меня интересуют вопросы определения координат на карте. А так же нанесения на карту специальных меток, маршрутов, определения участков каких-либо.

И еще. Скажите, что на ваш взгляд лучше использовать? Растровое изображение или векторное (в смысле, что лучше масштабировать?)?
0
LK
Заблокирован
16.03.2011, 17:50 8
Векторное однозначно. Поинтересуйтесь, есть така программа - MapInfo , не помню, правда, есть ли там что-то типа СДК.
0
16.03.2011, 17:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.03.2011, 17:50
Помогаю со студенческими работами здесь

Векторные диаграммы
Может кто подсказать как правильно чертить векторные диаграммы? Вот например в цепи параллельно...

Векторные карты в Qt
Здравствуйте. Есть такая задача: в программе, которая пишется на Qt и должна работать в офф-лайн...

Векторные диаграммы
Здравствуйте, помогите построить две векторные диаграммы для трехфазной цепи при соединении...

векторные подпространства
Как доказать, что множество V= 2a-3b b-7a ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru