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

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

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

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

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

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

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

7
0 / 0 / 0
Регистрация: 04.03.2010
Сообщений: 3
16.03.2011, 08:24
Так же интересует этот вопрос. Как работать с векторным изображением?
Хочу перевести jpeg-изображение в векторное изображение, а затем использовать в программе (работа с картой местности).
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
16.03.2011, 11:45
Некоторые сведения.
Графические файлы 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
Спасибо! Ту ссылку я изучил. Но, к сожалению, ничего интересного для себя не нашел Кроме того, что C++ Builder нельзя использовать для написания коммерческих приложений.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
16.03.2011, 12:05
Цитата Сообщение от xucc Посмотреть сообщение
1. Но, к сожалению, ничего интересного для себя не нашел
2. C++ Builder нельзя использовать для написания коммерческих приложений.
1. Кто знает, какие у вас интересы .
2. Это не верно.
0
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
16.03.2011, 13:24
Цитата Сообщение от xucc Посмотреть сообщение
Кроме того, что C++ Builder нельзя использовать для написания коммерческих приложений
Честно купленный - можно.
0
0 / 0 / 0
Регистрация: 04.03.2010
Сообщений: 3
16.03.2011, 17:35
Цитата Сообщение от LK Посмотреть сообщение
1. Кто знает, какие у вас интересы .
Меня интересует конкретные примеры работы с векторными изображениями. Я имею ввиду, код на C++ (желательно в Builder'e). А примеры кода такие, как масштабирование, перемещение увеличенных областей и т.д. Примеры я нахожу, пишу свое,и все же продолжаю искать.
Кроме того ,меня интересуют вопросы определения координат на карте. А так же нанесения на карту специальных меток, маршрутов, определения участков каких-либо.

И еще. Скажите, что на ваш взгляд лучше использовать? Растровое изображение или векторное (в смысле, что лучше масштабировать?)?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
16.03.2011, 17:50
Векторное однозначно. Поинтересуйтесь, есть така программа - MapInfo , не помню, правда, есть ли там что-то типа СДК.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.03.2011, 17:50
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru