Быстрая работы с графикой в среде windows


Содержание

Графика (22)

Программное обеспечение Artweaver является неотъемлемым помощником в создании и редактировании объектов растровой графики. Утилита многофункциональна и похожа на свой известный аналог – Photoshop.

Krita – программа с открытым исходным кодом для работы по созданию изображения. Имеет богатый набор инструментов. Адресована художникам и фотографам. Распространяется платно (версия Gemini) и бесплатно (Free).

PickPick – это бесплатная программа, объединяющая функционал графического редактора и утилиты, позволяющей захватывать экранные изображения для дальнейшей их обработки.

Adobe Flash Player – программа, воспроизводящая видео, флеш-анимацию и звуки. С ее помощью браузер отображает мультимедийный контент и запускает онлайн-игры. Несмотря на отсутствие графического интерфейса, есть возможность менять параметры настройки.

FastStone – бесплатное приложение, редактор, предназначенный для работы с графикой (переименование, сжатие, удаление ненужных деталей, добавление водяных знаков и т.д.).

IrfanView является бесплатным программным обеспечением, поддерживающим более 30 форматов, предназначенным для просмотра, редактирования и конвертации графических изображений.

Paint.NET является бесплатным программным обеспечением, удобным растровым графическим редактором, предназначенным для редактирования фото и всевозможных изображений.

Бесплатная программа Ashampoo Photo Commander FREE совмещает в себе множество возможностей: просматривать изображения, редактировать, публиковать и отправлять их. Также присутствует встроенный медиа проигрыватель.

Программное обеспечение ImageMagick представляет собой сборник утилит для работы с растровой графикой. Включает в себя создание, редактирование, изменение и конвертирование изображений, картинок, фото.

Fotosizer – утилита, позволяющая изменять размеры изображения. Основное достоинство программы в ее пакетной работе. Она может одновременно отредактировать несколько графических файлов.

Работа с графикой

30.09.2009, 14:44

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

Работа с графикой в СИ++
Здравствуйте, я хочу в Visual studio 2012 под windows организовать работу с графикой по аналогии с.

Работа с ГРАФИКОЙ
ПАМАГИТЕ ОЧ НАДО

Работа с графикой
Народ всем привет я начал работать с графикой в C++ и возникла проблема:) Вот есть задача: .

работа с графикой
подскажите код программы, которая выводит форму круга.

30.09.2009, 14:49 2 30.09.2009, 14:58 [ТС] 3

На счет смены среды не совсем желательно так как преподают именно в ней и работаем мы тоже в ней((
А на счет книжек можно по подробнее, пожалуйста?

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

30.09.2009, 15:04 4
30.09.2009, 15:04
30.09.2009, 15:05 5

broked, для работы с BGI(graphics.h) придется ставить борландовскую синенькую среду(Borland C++ 3.1 вроде) Там же есть подробный хелп по этой либе(F1). Вполне возможно,что можно перетащить всю либу в Dev, но неизвестно,возможно ли это,да и практического толка от этого ноль)

книга Андрэ Ламота — Программирование игр для Windows. Она тоже несколько устарела..и,все же,менее, чем этот graphics.h. Но при работе с BGI она тебе ничем не поможет,это так,для самообразования можно полистать.

30.09.2009, 15:38 6
30.09.2009, 23:26 [ТС] 7
01.10.2009, 10:51 8

Решение

01.10.2009, 12:28 9

broked , погляди мою програмку в VS 6.0
Как раз этой теме была посвященна одна из лаб по ВТ у нас в универе (ааа как же давно это было. )

PS:Для корректной работы нужны библиотеки nafxcw.lib (Release) и nafxcwd.lib (Debug), они есть в любом SDK или просто в нете скачай иначе компилятор ругаться наверно будет.

Вложения

shema_1_console.rar (5.7 Кб, 214 просмотров)
01.10.2009, 18:13 [ТС] 10

да да да да отсюда и качал библиотеку, спасибо за список функций)

Добавлено через 1 минуту
Всем еще раз огромное спасибо,и повторюсь, тему можно закрывать)

20.11.2012, 22:02 11
17.08.2020, 14:49 12
17.08.2020, 17:02 13
17.08.2020, 18:13 14

Задроты это кто вы имели в виду, типа хакеров? Слабые это те кто работает на си с нуля, смелые это те кто посильнее (наверно вы себя имели в виду), а задроты это те, кто может все и на винде писать и на андроиде и уж тем более на линуксе, так примерно вы имели в виду?

Добавлено через 4 минуты
Для слабых которая Xlib — она только под виндой работает или на линуксе тоже?

Добавлено через 3 минуты
Для вас которая — OpenGL — кажется кросплатформенная , на линуксе должна работать и функций много, вроде бы около 300, наверно хватит для начала, спасибо за информацию.

Добавлено через 3 минуты
ООО. а третья еще интереснее она для API , c чистым си будет работать под линуксом? , не ужели вы себя задротом назвали, ну да высокая у вас самооценка, мне понравилось, спасибо огромное за информацию, буду читать, интересно.

17.08.2020, 20:37 15

Xlib работает только под линуксами https://ru.wikipedia.org/wiki/Xlib
Opengl и vulkan — можно назвать кроссплатформенными.

Xlib(1) — если вы ищите «на чем нарисовать лабу» в линуксе и вы никогда не видели кода — то используйте его.
Vulkan(3) — если вы желаете стать супер-пупер(настолько супер, что просто космос, на выходных новый крайзис клепать например) разработчиком и у вас есть несколько лет свободного времени(в зависимости от навыков) то вам сюда. Сегодня вулкан еще паршиво работает.
OpenGl(2) — во всех остальных случаях вам сюда — в зависимости от навыков и желаний выбираете версию OpenGl
1(аля XLib(лабы)),
2(Качественные платформеры, гуи, хорошее такое хобби),
3(srysis который был, хорошее такое хобби),
4+(srysis который будет, хорошее такое хобби).

17.08.2020, 20:37
17.08.2020, 20:37

Работа с графикой
Здравствуйте, помогите с измненнем в программе. там по малому поменять, вместо «РНА» НУЖНО.

Работа с графикой
#include «graphics.h» #include #include #include #include.

Работа с графикой
Есть прога с вращением куба. Я ее сделал автоматически. Помогите, чтобы куб вращался стрелками с.

Программное обеспечение для работы с графикой

Графические форматы.

Одним из первых форматов растровой графики является формат BMP (BitMap). Этот формат знаком всем, кто работает в операционной системе Windows. Файлы такого формата имеют большой объем.

Формат GIF (Graphics Interlaced Format) был разработан как независящий от платформы растровый формат. Он предназначен для хранения растровых изображений с компрессией, записывает информацию «через строчку», позволяет хранить анимационные изображения.

Еще один формат — формат JPEG (Joint Photographic Experts Group). Несмотря на то, что этот формат поддерживает полноцветные фотореалистичные изображения и обеспечивает очень высокую компрессию файлов. Размер файла в 500 раз меньше, чем BMP.

TIFF (Tagged Image File Format) формат является аппаратно независимым форматом. Эффективен при импорте растровой графики в векторные программы и издательские системы. Ему доступен весь диапазон цветовых моделей.

PDF (Portable Document Format) формат не зависит от платформы. Хранит иллюстрации (векторные и растровые) и текст, причем со множеством шрифтов и гипертекстовых ссылок.

PSD (Adobe Photoshop Document) формат принадлежит растровому процессору Photoshop. Позволяет записывать изображение со многими слоями, их масками, дополнительными каналами, контурами и другой информацией.

FIF (Fractal Image Format) является форматом фрактальных изображений. Обычно файлы этого формата получаются несколько меньше файлов в формате JPEG.

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

Графический процессор — инструментальное средство, позволяющее создавать и модифицировать графические образы с использованием иллюстративной, коммерческой, научной или другой графики. Большинство графических процессоров удовлетворяют стандарту пользовательского интерфейса WIMP (Windows Image Menu Pointer), который основывается на следующем:

— панель включает меню действий, линейку инструментов и палитру цветов;

— на линейке инструментов расположены графические символы, которые необходимы для построения изображения любой степени сложности;

— палитра цветов содержит цветовую гамму монитора ПК.

Графические процессоры делятся на пакеты растровой, векторной и фрактальной графики. Пакеты первого типа предназначены для работы с рисунками и фотографиями (Adobe PhotoShop, Picture Publisher, Photo Works Plus, Aldus Photo Styler).

Пакеты векторной графики предназначены для профессиональной работы, связанной с художественной и технической иллюстрацией (CorelDraw, Adobe Illustrator, Aldus Free Hand, Professional Draw). Они занимают промежуточное положение меду системами автоматизированного проектирования и настольными издательскими системами.

Программное обеспечение фрактальной графики (Fractint, Manpwin, Mkokh, 3D Studio Max) предназначено для автоматической генерации изображений путем математических расчетов. Создание фрактальной художественной композиции состоит не в рисовании или оформлении, а в программировании.

Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: Как то на паре, один преподаватель сказал, когда лекция заканчивалась — это был конец пары: «Что-то тут концом пахнет». 8378 — | 8008 — или читать все.

188.64.174.135 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.

Отключите adBlock!
и обновите страницу (F5)

очень нужно

Настройки производительности графики в Windows 10

Читайте, как управлять производительностью графики с помощью стандартных инструментов Windows 10. Как установить производительность графики отдельно для каждого приложения.

Средние и высокопроизводительные персональные компьютеры обычно имеют специальный графический процессор «GPU». Специальный графический процессор используется вашей системой для запуска приложений, требующих интенсивных ресурсов (например, современные виды игр), которые не может обработать обычная видеокарта. Графический процессор обычно представляет собой чип «NVIDIA» или «AMD», и оба имеют собственную специализированную панель управления.

Панель Windows 10 “Настройки производительности графики”

Панели управления позволяют пользователям принудительно использовать графический процессор для обработки приложения. Когда запущенное приложение вынуждено использовать графический процессор, это означает, что ваш компьютер работает в режиме высокой производительности. Как правило, ваша операционная система сама решает, какое приложение должно использовать выделенный графический процессор, но вы можете, конечно, и самостоятельно выбрать его. «Windows 10» добавляет новую панель, которая позволяет вам устанавливать производительность графики для каждого конкретного приложения.

Эта новая функция доступна только в «Windows 10» с установленным обновлением «Insider Build 17093». Она не позволяет выбирать между встроенной графической видеокартой и графическим процессором. Вместо этого она позволяет устанавливать параметры производительности по умолчанию для каждого из приложений. Приложение можно настроить так, чтобы оно всегда работало в режиме энергосбережения или в режиме высокой производительности. Некоторые приложения могут не использовать выделенный графический процессор, и в этом случае, вы ничего не сможете с этим поделать. Вы можете попытаться принудительно заставить приложение использовать выделенный графический процессор с панели управления вашего «GPU», но он может и не заработать. В соответствии с обновлениями «Microsoft» эта новая панель настроек заменяет такую функцию на панели управления вашего «GPU». Вы можете использовать ее или воспользоваться панелью управления для вашей видеокарты.

Производительность графики для каждого приложения


Откройте приложение «Параметры Windows», нажав в нижней части экрана кнопку «Пуск» и выбрав в левом боковом меню кнопку с изображением шестеренки.

Либо используйте более быстрый и простой способ – нажмите сочетание клавиш «Windows + Х» или щелкните правой кнопкой мыши по кнопке «Пуск» в нижнем левом углу экрана и выберите во всплывающем меню раздел «Параметры».

Перейдите в группу настроек «Система», выберите вкладку «Дисплей» и прокрутите бегунок вниз до ссылки «Дополнительные графические параметры» и нажмите на нее.

Затем в открывшемся окне выберите тип приложения, для которого будете выполнять настройки графической производительности. Далее вам будет предложен список, который будет заполнен на основе выбранного вами типа приложения. Выберите приложение и нажмите кнопку «Добавить». Когда приложение появится в списке, щелкните его и нажмите кнопку «Параметры». В нашем случае мы добавили приложение «Paint 3D».

Кнопка «Параметры» отобразит окно с тремя возможными настройками производительности графики, которые вы можете установить для приложения. Параметр «Системное значение по умолчанию» позволяет операционной системе самой выбрать лучшие параметры производительности. Параметр «Энергосбережение» обычно означает, что будет использоваться встроенная графическая видеокарта, а параметр «Высокая производительность – применение целевого графического процессора «GPU». Конечно, есть исключения, которые будут описаны ниже.

Исключения

Существуют случаи, кода пользователь не может указать приложению, какие параметры графики ему использовать. На изображении выше, приложение «Paint 3D» может использовать только встроенную графическую видеокарту, хотя наша тестовая система оснащена графическим процессором «NVIDIA». Приложения вроде этого, просто не могут использовать выделенный графический процессор, и нет простого способа заставить их сделать это. Даже если вы сможете заставить приложение, такое как «Paint 3D», использовать выделенный графический процессор, то в итоге лучше работать оно все равно не станет.

Аналогично, некоторые приложения (в основном современные игры) не смогут использовать встроенную графическую карту. Они всегда будут использовать только выделенный графический процессор, и соответствующий вариант будет указан в параметрах графики.

Логично, что возникают вопросы, не бесполезна ли эта настройка, но это не так. Даже если приложение использует встроенную графику, оно все равно может применять параметры высокой производительности. Аналогично, приложение, которое должно использовать выделенный графический процессор, может по-прежнему использовать его в режиме с низким энергопотреблением. Использование этих параметров не будет безболезненным. Если вы обнаружите, что изменение предпочтений в отношении производительности графики для приложения приводит к низкой производительности, медленному отклику или сбою работы приложения, то вы всегда можете вернуть его настройки в режим по умолчанию.

Здесь будет довольно много проб и ошибок, потому что в настоящее время доступно несколько разных моделей графических процессоров, системные спецификации которых сильно различаются, а приложения имеют свои собственные настройки и возможности. Компания «Microsoft» явно пытается предоставить пользователям более совершенную поддержку графического процессора, и, хотя эта новая функция может быть не идеальной, она все же полезна. Это определенно одна из тех функций, которую пользователи получат в следующем официальном обновлении операционной системы «Windows 10».

Обзор софта для работы с SVG-графикой

Для оформления любой web-страницы необходима как статичная графика, так и разнообразные анимационные и интерактивные элементы, которые, во-первых, обеспечивают большую привлекательность представленной на ней информации, а во-вторых, способствуют лучшему восприятию материала.

рафическая информация передается намного медленнее текстовой, а время загрузки изображений находится в прямой зависимости от размера их графических файлов, поэтому быстрая загрузка web-страниц предполагает небольшой размер внедренных в них графических изображений. Последнее достигается путем оптимального выбора формата графического файла, а также за счет оптимизации, задача которой — найти компромисс между скоростью загрузки страницы и качеством представленных на ней изображений. Однако возможности оптимизации небезграничны, а высококачественные изображения, как правило, имеют внушительный объем, вследствие чего достижение высокого качества представленных в web изображений при их небольших размерах по-прежнему остается серьезной проблемой.

Но вопрос не только в размере и качестве — разработка дизайна для web-страницы оказывается делом, требующим от дизайнера знания широкого спектра разноплановых технологий и программных продуктов, поскольку для разных видов графической информации приходится использовать разнообразные форматы файлов и различные технологии их создания. Для статичной графики применяют форматы GIF, JPG или PNG, создавать которые можно в самых разных графических пакетах. Для анимационных объектов используют форматы animation GIF и Flash, а разрабатывают такие объекты в специализированных программных приложениях (особых для каждого из названных типов форматов). Интерактивные элементы (ролловеры, карты ссылок ImageMap и т.п.) тоже, как правило, создаются в специализированных приложениях и представляют собой набор графических изображений, связь между которыми устанавливается в дополняющем их файле с HTML-кодом.

Удачным решением названных проблем может стать переход на графический формат SVG (Scalable Vector Graphics — масштабируемая векторная графика), основанный на языке XML, благодаря чему любое SVG-изображение можно представить набором командных строк (рис. 1), а сам SVG-файл можно открыть в любом текстовом редакторе, включая блокнот. Эта сравнительно новая технология изначально разрабатывалась компанией Adobe специально для web, а сегодня представляет большой интерес и для мобильных устройств, обеспечивая создание высококачественной статичной, анимационной и интерактивной графики. Поэтому нет ничего удивительного в том, что она активно поддерживается консорциумом W3C (http://www.w3.org/Graphics/SVG) — в 2003 году стандарт SVG 1.1 был принят в W3C в качестве рекомендации, а на данный момент идет разработка спецификации SVG 1.2 (http://www.w3.org/TR/SVG12/).

Рис. 1. Фрагмент SVG-файла вместе
с соответствующим ему изображением

Технология SVG позволяет объединить в одном формате текст, графику, анимацию и интерактивные компоненты и базируется на трех типах графических изображений: векторных формах, рисунках и тексте. Формы, как это принято в векторной графике, представлены либо прямолинейными и криволинейными контурами, либо графическими примитивами (прямоугольниками, эллипсами и др.), а рисунки представляют собой импортированные растровые изображения. Помимо этого формат SVG поддерживает различные виды анимационных (напоминающих GIF- и flash-анимацию) и интерактивных объектов, таких как ролловеры, карты ссылок и прочие элементы навигации. А поскольку данный стандарт основан на языке XML, то SVG-файл наряду с элементами, предназначенными для визуального отображения, может содержать также различные метаданные.

Плюсы и минусы применения формата SVG

Использование формата SVG позволяет разрабатывать для Сети и мобильных устройств более компактную, быстро загружающуюся, высококачественную разноплановую графику, чего не может обеспечить никакой другой графический формат. К основным достоинствам графического формата SVG можно отнести следующие:

  • высокое качество изображений независимо от их размеров, что объясняется векторной природой SVG-формата. Изображения могут неограниченно уменьшаться или увеличиваться без потери качества (рис. 2) в соответствии с размером дисплея, что позволяет получать качественное изображение графической информации на различных типах устройств (десктопах, карманных компьютерах и пр.), а также дает возможность более тщательно рассмотреть отдельные детали — это важно, например, при работе с техническими рисунками;
  • гораздо меньший размер файлов по сравнению с форматами GIF, JPG, PNG и animation GIF, а тем более с форматом Flash. Например, если протестированный для статьи файл формата GIF, сжатый в режиме LZW-компрессии, составлял 26 Кбайт, то размер соответствующего ему SVG-файла занял 1220 байт, а при сжатии в формате SVGZ составил всего 685 байт.

Но дело не только в этом. По сравнению с традиционными вариантами графического представления Сети применение SVG-формата имеет немало других неоспоримых преимуществ.

Так, для разработчиков важными плюсами являются:

  • возможности совмещения в одном формате разработки статичных, анимационных и интерактивных элементов, а также сочетания векторных и растровых объектов;
  • улучшенная работа с текстом, включая кернинг, текст по кривой и неограниченное использование шрифтов;
  • более эффективное управление точностью передачи цветов и широчайшие возможности в плане использования в web-изображениях градиентных заливок высокого разрешения, теней, фильтров и т.п.;
  • текстовая природа SVG-формата и поддержка им каскадных таблиц стилей, что значительно упрощает процесс обновления web-сайта и позволяет при необходимости вносить в него изменения без обращения к специальным программам;
  • интеграция с построенными на стандартах XML (Extensible Markup Language) и CSS (Cascading Style Sheets) базами данных, что позволяет сохранять SVG-изображения в базе данных и создавать с их использованием динамические web-страницы — различные для разных платформ, персональных настроек и т.д.;
  • отсутствие проблем индексации — SVG-файлы индексируются любыми поисковыми машинами (в отличие, например, от SWF-файлов).

Пользователей порадует высококачественный и быстро загружающийся SVG-контент. Кроме того, предусмотрена возможность копировать текст, находящийся на SVG-изображении, и тем самым сохранять некоторую полезную для себя информацию, а также проводить поиск текста в изображении, что в ряде случаев может оказаться крайне необходимым, например при поиске нужного названия на карте или чертеже.

Рис. 2. Просмотр SVG-графики при разном масштабировании

Тем не менее, как водится, наряду с плюсами у технологии SVG имеются и минусы, причем весьма серьезные.

  • SVG-изображения слабо поддерживаются производителями Интернет-браузеров. В результате для просмотра SVG-графики из браузера пользователи вынуждены дополнительно устанавливать обеспечивающий данную возможность плагин от сторонних производителей, например SVG Viewer от компании Adobe. Теоретически это несложно — соответствующие плагины просты в установке, бесплатны, имеют небольшой объем и их можно быстро скачать по Сети. На практике все оказывается гораздо сложнее, поскольку большинство Интернет-пользователей не догадываются о существовании данных возможностей и потому не могут просматривать данный вид графики — без плагина она просто не видна. Однако ситуация постепенно меняется, и в прошедшем году два ведущих разработчика web-браузеров внедрили поддержку формата SVG. Весной компания Opera Software выпустила 8-ю версию браузера Opera, поддерживающую SVG 1.0 Tiny; в появившейся чуть позже версии Opera 9.0 реализована частичная поддержка формата SVG 1.0 Basic. Вторым разработчиком, включившим поддержку SVG, стала The Mozilla Organization — в состав выпущенного ею браузера Firefox 1.5 включен модуль Mozilla SVG project, обеспечивающий просмотр SVG-графики спецификации 1.1. Кроме того, в середине 2005 года активную работу по внедрению поддержки SVG 1.1 начали разработчики браузера Safari, функционирующего на компьютерах под управлением Mac OS X;
  • в сравнении с другими графическими форматами формат SVG пока слабо поддерживается и разработчиками графического ПО, хотя такие ведущие графические пакеты, как Adobe Illustrator, Corel DRAW и др., позволяют экспортировать графику в SVG-файлы. Конечно, SVG-файлы могут быть созданы и в любом текстовом редакторе, однако это нецелесообразно в смысле быстроты и дешевизны разработки. В текстовом редакторе удобно подправить файл в случае необходимости (что, кстати, возможно только при наличии глубоких знаний о XML-технологии), но создавать его с нуля неразумно, поскольку это потребует чрезмерных затрат времени и сил. Для этого нужны простые и удобные средства быстрой визуальной разработки графики в формате Scalable Vector Graphics с возможностью правки в этой же среде соответствующего изображению программного кода, однако таких продуктов совсем немного и они недостаточно известны.

В итоге складывается весьма печальная ситуация — многие пользователи пока не могут просматривать SVG-графику по причине отсутствия ее поддержки web-браузерами на должном уровне, web-разработчики практически не разрабатывают SVG-графику, как бы она ни была привлекательна, а разработчики ПО не балуют web-дизайнеров разнообразием приложений, ориентированных специально на SVG. В результате получается замкнутый круг: «Если нет контента, то людям не нужна реализация SVG, а если нет реализации, то нет и контента» — именно так охарактеризовали создавшуюся ситуацию на одном из заседаний консорциума W3C.

Но можно посмотреть на ситуацию и с другой стороны: поддержка SVG (хотя пока и не в полном объеме) двумя популярными Интернет-браузерами, равно как и интерес к технологии именитых разработчиков говорит о том, что «лед тронулся» и что у SVG появился реальный шанс превратиться в один из популярных форматов для представления web-информации. Этот шанс повышается и в связи с ростом интереса к технологии SVG в отношении мобильных устройств, где требования к размеру и качеству изображений гораздо выше. Компания Opera Software, например, предполагает вначале реализовать полную поддержку формата SVG на десктопах и лишь затем перенести ее на мобильные платформы. Поэтому самое время задуматься об использовании SVG и web-дизайнерам — иначе они рискуют в ближайшем будущем оказаться в числе отстающих.

Плагины для просмотра SVG-графики

Как уже было отмечено, пока что большинству пользователей для просмотра SVG-графики в полном объеме в окне Интернет-браузера придется воспользоваться одним из подходящих плагинов, наиболее известными из которых являются бесплатные модули Adobe SVG Viewer и Corel SVG Viewer. Первый из них — Adobe SVG Viewer — поставляется как отдельное приложение, отличается компактностью и удобством, работает на разных платформах, поддерживает большое количество Интернет-браузеров и потому гораздо более популярен среди пользователей. Приложение Corel SVG Viewer входит в состав пакета Corel Smart Graphics Studio, но доступно и как freeware.

Существуют и другие варианты просмотра SVG-графики — можно, например, воспользоваться соответствующими модулями из пакетов Amaya (http://www.w3.org/Amaya/), Apache Batik (http://xml.apache.org/batik), KDE KSVG (http://www.kde.org) и др. Полный список приложений, обеспечивающих просмотр SVG-изображений, приведен по адресу: http://wiki.svg.org/Viewer_Implementations.

Adobe SVG Viewer

Разработчик: Adobe Systems, Inc.

Размер дистрибутива: 2,25 Мбайт

Цена: бесплатно

Работа под управлением: Windows 95/98/Me/NT/2000/XP, Mac OS 8.6/9/X, Linux, Solaris

Поддержка браузеров: Internet Explorer версии 4.0 и выше, Netscape Navigator или Communicator версий от 4.5 до 4.78 (за исключением версий 6.x)

Corel SVG Viewer

Разработчик: Corel Corp

Размер дистрибутива: 4,9 Мбайт

Цена: бесплатно

Работа под управлением: Windows 98/NT/2000/Me/XP

Поддержка браузеров: Microsoft Internet Explorer 5.5 и выше, Netscape Navigator или Communicator версий 4.79, 7.02

Программы для создания SVG-графики

Все программы для создания SVG-графики можно разбить на три большие группы. В первую входят популярные двумерные графические пакеты, ориентированные на работу с векторной графикой и позволяющие вместе с тем экспортировать изображения в формат SVG. Наиболее популярные из них — Adobe Illustrator и CorelDRAW; кроме того, подобный экспорт в той или иной мере поддерживает множество других приложений: AutoCAD, Microsoft Visio и пр. Основным преимуществом данной группы приложений является то, что они обладают расширенным инструментарием для создания векторных изображений и позволяют добиться уникальных эффектов за счет использования прозрачностей, градиентных заливок, разнообразных фильтров и пр. Но указанные приложения требуют серьезной специальной подготовки и потому в большей степени рассчитаны на профессиональных дизайнеров. Кроме того, они по большому счету не ориентированы на SVG-дизайн (хотя и позволяют получать графику в формате Scalable Vector Graphics) — обеспечивая удобное визуальное создание и отображение изображений, эти приложения не допускают корректировки их на текстовом уровне, что актуально в отношении SVG-графики. Существенным является и тот факт, что поддержка формата Scalable Vector Graphics в них реализована не в полном объеме, в результате чего не все элементы векторного изображения могут быть без ошибок экспортированы в SVG.

Вторую группу программных продуктов образуют пакеты, предназначенные исключительно для создания SVG-графики. Они обладают гораздо меньшими возможностями в плане визуальной разработки векторных изображений, хотя и включают весь необходимый инструментарий. Но зато они предоставляют удобные средства для редактирования исходного кода и позволяют работать с SVG-объектами параллельно — и в визуальном режиме, и на уровне кода, причем между этими вариантами представления информации можно легко переключаться. Все приложения из этой группы очень просты и доступны и не требуют много времени на освоение. К тому же они имеют относительно небольшие по объему дистрибутивы (в сравнении с приложениями первой группы), поэтому без проблем могут быть приобретены через Интернет. Однако программ с такими возможностями совсем немного, и ниже мы подробно рассмотрим лишь четыре, представляющие наибольший интерес и рассчитанные на разные категории пользователей. С полным списком доступных для создания SVG-графики приложений можно ознакомиться по адресу: http://wiki.svg.org/Design_Tools.

И наконец, в третью группу можно включить любые текстовые редакторы, в том числе обычный блокнот. Как было отмечено выше, формат Scalable Vector Graphics базируется на языке XML, что позволяет при необходимости создавать и редактировать SVG-файлы на текстовом уровне в текстовом редакторе.

Полнофункциональные графические приложения, позволяющие создавать SVG-графику

Adobe Illustrator CS2

Разработчик: Adobe Systems, Inc.

Размер дистрибутива: Macintosh-версия — 428,9 Мбайт, Windows-версия — 398,6 Мбайт

Способ распространения: shareware (30-дневная демонстрационная версия пакета доступна по адресу: http://www.adobe.com/products/tryadobe/main.jsp#product=27)

Цена: 665 долл.

Работа под управлением: Windows 2000 с Service Pack 3 или Windows XP, Mac OS X версий от 10.2.4 до 10.2.7, Java Runtime Environment 1.4.1

Начиная с 9-й версии в Adobe Illustrator (рис. 3) реализованы импорт и экспорт SVG-файлов, причем на гораздо более высоком в сравнении с аналогичными графическими приложениями уровне. Пакет поддерживает все существующие SVG-спецификации, кодировки ISO 8859-1, UTF-8 и UTF-16, различные варианты экспорта текста и позволяет экспортировать изображения как в обычном формате SVG, так и в сжатом SVGZ.

Рис. 3. Создание интерактивного SVG-элемента в Adobe Illustrator

В создаваемой в его среде SVG-графике можно использовать градиенты, прозрачности, а также целую серию специально предусмотренных для этого SVG-эффектов (Effect=>SVG Filters) в виде различных теней, размытия и пр. Изображения с такими эффектами сохраняют четкость при просмотре в web-браузере с любым увеличением. Помимо статичной графики Illustrator позволяет получать и интерактивную графику в формате SVG — для этой цели предусмотрена специальная палитра SVG Interactivity (ее можно открыть из меню Window=>SVG Interactivity), в которой задаются действия для интерактивных объектов. Стоит отметить, что работа над интерактивными SVG-элементами в программе Illustrator требует знания языка Java Script и понимания основных принципов объектно-ориентированного программирования. Кроме того, с помощью формата Scalable Vector Graphics в данной программе можно создавать графику динамических данных (Dynamic Data-Driven Graphics).

CorelDRAW Graphics Suite 12

Разработчик: Corel Corp.

Размер дистрибутива: 200 Мбайт

Способ распространения: shareware (демонстрационную версию можно скачать с сайтов Интернет-магазинов, например по адресу: http://allsoft.ru/Download.php?ver=17605)

Цена: 290 долл. (Allsoft.ru)

Работа под управлением: Windows NT/2000/XP

Известное приложение для разработки профессиональной векторной графики CorelDRAW (рис. 4), входящее в состав пакета CorelDRAW Graphics Suite 12, обеспечивает импорт и экспорт в форматах SVG и SVGZ на базовом уровне, а следовательно, может использоваться для создания статичной и интерактивной SVG-графики.

Рис. 4. Экспорт векторного изображения
в SVG-файл в CorelDRAW

В приложении реализована поддержка нераспознанных данных, атрибутов и метаданных, а также предусмотрена возможность предварительного просмотра SVG-файлов в браузере перед экспортом. Кроме того, возможна кодировка Unicode для методов кодирования UTF-8 и UTF-16 и различные варианты экспорта текста и bitmap-изображений. В последней версии значительно улучшена поддержка экспорта символов, текста, теней, контуров, слоев, внедренных двоичных изображений и пр.

Mayura Draw 4.3

Разработчик: Mayura Software

Размер дистрибутива: 1,3 Мбайт

Способ распространения: shareware (демонстрационная версия — http://www.mayuradraw.com/mdraw.zip)

Цена: 39 долл.

Работа под управлением: Windows 95/98/Me/NT/2000/XP

Mayura Draw (рис. 5) — очень простая и дешевая программа создания векторной графики, рассчитанная на широкого пользователя. Полученные в ней векторные изображения при желании можно экспортировать в формат SVG, и потому Mayura Draw может стать возможным решением для разработки статичной SVG-графики. Программа поддерживает все основные инструменты векторной графики и позволяет получать векторные изображения на основе графических примитивов, линейных и криволинейных контуров и текста. В перечне ее возможностей — удобные средства выравнивания, распределения и упорядочения объектов, управление прозрачностью, использование направляющих и линеек для точного размещения объектов и разнообразные трансформации.

Рис. 5. Интерфейс программы Mayura Draw

Специализированные пакеты для создания SVG-графики

EvolGrafiX XStudio 6.1

Разработчик: EvolGrafiX

Размер дистрибутива: 7,25 Мбайт


Цена: 449 долл. — коммерческая лицензия, 249 долл. — академическая лицензия

Работа под управлением: Windows 2000/XP

Профессиональный пакет XStudio (рис. 6) представляет собой удобный инструмент для создания разноплановой SVG-графики для Сети и мобильных устройств и обеспечивает полный контроль как над SVG-проектом в целом, так и над векторными изображениями, анимацией, скриптами и пр. Приложение отличается удобным, интуитивно понятным и легко настраиваемым пользовательским интерфейсом, предоставляет широкий набор инструментальных средств, имеет высокую скорость работы, позволяет создавать SVG-графику всех существующих спецификаций и поддерживает все стилевые оформления Scalable Vector Graphics. Все это в сочетании с относительно невысокой для профессионального пакета ценой позволяет считать его лучшим профессиональным решением подобного плана. Пакет XStudio поставляется с подробной документацией, дополненной серией уроков, и прост в освоении.

Рис. 6. Совмещение визуального создания изображения с правкой исходного кода
в EvolGrafiX XStudio

Приложение обладает всеми необходимыми возможностями для создания и обработки векторных изображений и в этом плане очень напоминает пакет Adobe Illustrator. При этом XStudio ориентирован непосредственно на подготовку статичной, интерактивной и анимационной SVG-графики и потому наряду с классическими средствами работы с векторными объектами дополнен специфическими SVG-возможностями. Встроенная инструментальная панель Document Object Model (DOM) обеспечивает иерархическое представление SVG-объектов, удобный XML-редактор позволяет исправлять исходный код на текстовом уровне, а скриптовой редактор — дополнять его Java-скриптами. Работа с кодом организована очень удобно: автоматически выделяются фрагменты кода выбранного объекта, имеется возможность поиска текста и установки закладок и пр. Любые изменения кода мгновенно отражаются в визуальном окне просмотра, а визуальные изменения — в окне редактора.

Inkscape

Разработчик: IOSN (International Open Source Network — Международная сеть открытого ПО)

Размер дистрибутива: 8,7 Мбайт

Цена: бесплатно

Работа под управлением: Windows 9x/NT/2000/XP, Mac OS X, Linux

Inkscape (рис. 7) — самый перспективный векторный редактор на базе модели Open Source, являющийся многоплатформенным и представляющим собой мощный инструмент для разработки графики в соответствии со стандартом Scalable Vector Graphics. Своими функциональными возможностями работы с векторными изображениями, равно как и интерфейсом, Inkscape очень напоминает CorelDRAW. В нем реализованы поддержка alpha-каналов, работа со слоями, использование обтекаемого текста, эффектные градиентные заливки, большое число фильтров и эффектов, разнообразные трансформации, удобная работа с контурами и объектами, группировка объектов и многое другое. Возможны импорт данных из файлов JPEG, PNG и TIFF и внедрение их в SVG-изображения.

Рис. 7. Правка исходного кода в окне
встроенного редактора Inkscape

Однако в отличие от CorelDRAW пакет Inkscape позиционируется как приложение для SVG-дизайнеров, поэтому в нем наряду с классическим визуальным созданием графики предусмотрены возможности непосредственной обработки XML-кода в среде встроенного текстового редактора. Программа настроена на сохранение изображений в обычных и сжатых SVG-файлах, хотя при желании их можно конвертировать в распространенные векторные и растровые форматы.

Пакет Inkscape отличается удобным русифицированным интерфейсом, прост в освоении и поставляется с неплохой справочной системой, включающей разнообразные примеры использования, а кроме того, данное приложение бесплатно — все это делает его очень привлекательным для широкого круга пользователей. Основными недостатками программы являются ее невысокая скорость работы и повышенные требования к системным ресурсам.

Corel WebDraw

Разработчик: Corel Corp

Размер дистрибутива: 15,6 Мбайт

Способ распространения: shareware (30-дневная демонстрационная версия — http://www5.jasc.com/pub/wdw102ev.exe)

Цена: 179 долл. — download-версия, 199 долл. — CD-версия

Работа под управлением: Windows 98/NT4/2000/Me/XP

Пакет Corel WebDraw (рис. 8), более известный как Jasc WebDraw, — универсальное решение для создания высококачественной графики и анимации в формате SVG, ориентированное на профессиональных дизайнеров. А интуитивно понятный интерфейс программы делает ее привлекательной и для широкого круга пользователей.

Рис. 8. Интерфейс программы WebDraw

В приложении доступен обширный набор стандартных графических инструментов, характерных для полнофункционального приложения работы с векторной графикой: базовые формы (эллипс, прямоугольник, звезда и пр.), перо, полигон, полилиния, текст и т.п. Наряду с векторными объектами WebDraw позволяет дополнять SVG-объекты внешними растровыми изображениями. Помимо обычных заливок и наложения готовых стилей можно использовать сложные градиенты, заливки, в том числе и созданные собственноручно узоры. Для получения более эффектных изображений можно воспользоваться фильтрами — как достаточно простыми (размытие и наложение тени), так и сложными (текстурирование и освещение). Для точного размещения объектов предназначены сетки, направляющие и линейки, а встроенная инструментальная панель Document Object Model (DOM) представляет SVG-объекты в виде иерархического дерева, что существенно упрощает управление.

WebDraw оснащен универсальной линейкой раскадровки анимации Animation Timeline, которая построена на базе объектной модели SVG DOM (Document Object Model), что позволяет выбирать и анимировать практически любой атрибут или свойство объекта всех типов в любое время. Механизм перетаскивания позволяет редактировать непосредственно в монтажной линейке начальную и конечную точки анимации, а также продолжительность каждой фазы анимации. Поскольку ключевые точки анимации (keytime) вставляются каждый раз при установке параметров анимации для атрибута или свойства объекта, их можно переносить на другие участки раскадровки в целях автоматической настройки распределения эффектов анимации во времени.

Пакет позволяет работать с SVG-графикой в двух вариантах: как с набором визуально отображаемых графических объектов, так и с соответствующим исходным кодом. Редактирование исходного кода во встроенном текстовом редакторе файлов SVG обеспечивает дополнительную гибкость и контроль над содержимым файлов. Автоматическая проверка изменений в исходном коде помогает добиться гарантированной корректности поведения создаваемой графики, а найденные ошибки отмечаются цветом, что избавляет дизайнера от многочасовых поисков среди сотен строк кода. Результат любых изменений в исходном коде сразу отображается на экране. При желании в WebDraw можно импортировать, редактировать и оптимизировать SVG-файлы, созданные в среде других приложений.

Sketsa SVG Editor 3.2.3

Разработчик: KIYUT

Размер дистрибутива: 5,99 Мбайт

Способ распространения: shareware (демонстрационная версия, добавляющая метку на изображение, — http://www.kiyut.com/products/sketsa/sketsa.zip)

Цена: 49 долл.

Работа под управлением: Windows 2000/XP, Java VM (JRE) 1.5 и выше (http://www.java.com/getjava), UNIX и Linux

Приложение Sketsa (рис. 9) относится к самым популярным из SVG-редакторов и позволяет создавать профессиональную SVG-графику, в том числе с оптимизацией в формате SVGZ. Пакет удачно сочетает в себе простоту и удобство работы с широким перечнем возможностей и совместим с Windows-, Mac- и Linux-системами.

Рис. 9. Визуальное редактирование изображения в Sketsa

Sketsa поддерживает классический набор характерных для любого векторного приложения инструментальных средств, позволяющих создавать и трансформировать любые векторные объекты на основе как контуров, так и графических примитивов и текста, которые при желании несложно дополнить растровыми изображениями. Возможно управление прозрачностью, использование градиентных заливок и фильтров. Все это удачно дополнено специализированными SVG-возможностями, благодаря которым любое изображение можно редактировать не только визуально, но и в текстовом режиме. Для редактирования SVG-кода в пакете предусмотрен встроенный текстовый редактор XML. В целях удобства управления объектами имеется встроенная инструментальная панель Document Object Model (DOM), представляющая собой иерархический древовидный набор объектов в документе SVG, что позволяет выбрать любой объект документа для редактирования его свойств.

Рекомендуемые бесплатные программы для работы с графикой и дизайном для Windows

Данная программа предлагает передовые средства эскизного рисования для дизайнеров и художников, независимо от их специализации.

Если вы занимаетесь нелинейным монтажом видео и создаете собственные видеоколлекции, то просто обязаны ознакомиться с одним из лучших видеоредакторов от компании Adobe – Premiere Professional CS5…

Краткое неформальное введение в графику Windows

Вежневец Владимир 1

Аннотация

Целью этого документа является ознакомление новичков с тем, как устроена 2D графика в Windows и как с помощью имеющихся средств можно делать простые, но полезные вещи.

К данному тексту прилагаются три программки с исходным кодом под Visual C++ 6.0, Delphi 5 и CBuilder 5, в которых дан «скелет» приложения умеющего загрузить, показать, обработать и сохранить изображение в формате bmp.

Содержание

1 Цель этого документа

Целью этого документа, как и первого (и частично второго) задания в курсе «Машинная графика» для студентов второго курса ВМиК МГУ является ознакомление новичков с тем, как устроена 2D графика в Windows и как с помощью имеющихся средств можно делать простые, но полезные вещи.

Чего мы коснемся:

  • Устройство графики в Windows;
  • Как рисовать простые вещи (линии, геометрический фигуры, текст) с помощью функций WinAPI 2 ;
  • Как загрузить, отобразить и обработать изображение с помощью функций WinAPI;
  • MFC надстройка над WinAPI;
  • VCL надстройка над WinAPI;

В качестве приложения к данному тексту выступают три программки с исходным кодом под Visual C++ 6.0 (MFC_GML3), Delphi 5 (DelphiBasis) и CBuilder 5 (SDIApp), в которых дан «скелет» приложения, умеющего загрузить, показать, обработать и сохранить изображение в формате bmp.

2 Устройство графики в Windows

2.1 Graphics Device Interface и Device Context

Не стану углубляться в теорию строения Windows и ее графической подсистемы (литературы на эту тему написано вполне достаточно), постараюсь коротко изложить некий минимум знаний, который понадобится при программировании простейшей графики в Windows. При этом я постараюсь также дать понимание что и как устроено (пускай на простом уровне).

Во-первых, в Microsoft Windows существует несколько средств для вывода графической информации, включая DirectDraw, OpenGL, GDI и т.д. Мы рассмотрим GDI (Graphics Device Interface) — подсистему Windows, ответственную за вывод графики и текста на дисплей и принтер. Именно она занимается выводом большинства «окошек», которые и составляют то, что видит пользователь Windows на экране. Она является базовым и, пожалуй, простейшим способом вывода графики в Windows.

С графикой Windows с помощью GDI неразрывно связано понятия контекста устройства (device context). Контекст устройства (DC) — это структура данных, содержащая информацию о параметрах и атрибутах вывода графики на устройство (например, дисплей или принтер). Такая информация, в частности, включает в себя: палитру устройства, определяющую набор доступных цветов; параметры пера для черчения линий; параметры кисти для закраски и заливки; параметры шрифта, использующегося для вывода текста.

В GDI существуют пять типов контекста устройства — связанный с дисплеем (Display DC), принтером (Printer DC), контекст виртуального устройства в памяти (Memory DC), контекст метафайла (Metafile DC) и специальный вид контекста — информационный (Information DC).

Первые четыре типа контекста устройства — display, printer, memory и metafile предоставляют унифицированный интерфейс для вывода графической информации на разнотипные устройства, освобождая приложение (и его разработчика) от необходимости заботится о том, куда именно производится вывод графики. Информационный контекст для вывода графики не используется, он служит исключительно для получения информации о параметрах и поддерживаемых режимах устройства, с которым связан.

В чем отличие первых четырех типов контекста? Это можно понять из их названий — Display DC служит для вывода на экран, Printer DC для печати на принтер или графопостроитель, Memory DC служит для создания растровых изображений в памяти с возможностью быстрого их копирования в другие типы контекстов (и обратно), Metafile DC нужен для вывода графики в метафайл. Метафайл — это хранилище последовательности команд GDI, каждая из которых описывает одну графическую функцию. В отличие от растровых файлов, хранящих графическую информацию непосредственно в виде массива пикселов, метафайл ее хранит в виде последовательности команд, которая создает результирующий рисунок.

2.2 Как рисовать в Device Context?

Для вывода графической информации существует набор функций, которые можно разделить на несколько категорий:

  • Методы рисования линий: LineTo, MoveTo, Polyline, Arc, ArcTo, PolyBezier, и др.
  • Методы рисования замкнутых фигур: Ellipse, Rectangle, Polygon, Pie, Chord и др.
  • Методы вывода текста: TextOut, DrawText и т.д.
  • Функции работы с растровым изображением: GetPixel, SetPixel, FloodFill, BitBlt и т.д.

Существует отдельная категория функций работы с DC по переключению режимов и установке параметров вывода графической информации. Часть из них устанавливается напрямую через определенные функции (например, SetBkColor), часть — с помощью специальных графических объектов: перо (pen) — задает режим вывода линий (цвет, толщина, стиль); кисть (brush) — регулирует режим закраски фигур (цвет, стиль); шрифт (font) — задает свойства шрифта, которым выводится текст; палитра (palette) — задает набор используемых в DC цветов; область (region) — используются для задания clipping regions — областей отсечения, вне которых вывод графики блокируется.

Работа с графическими объектами производится с помощью их дескрипторов (handles) — HDC, HPEN, HBRUSH, HFONT и т.д. Создание и удаление объектов производится с помощью соответствующих функций — например, объект pen создается с помощью CreatePen, удаляется с помощью DeleteObject. Режимы, задающиеся через графические объекты, переключаются с помощью создания новых объектов и указания контексту (DC) использовать их для вывода графики. Это делается помощью функции SelectObject:

При выборе нового объекта через SelectObject в качестве возвращаемого значения передается дескриптор объекта, бывшего в использовании в DC раньше. Нужно иметь ввиду, что все создаваемые объекты нужно не забывать удалять их после использования. Более того, сам DC всегда создается с некоторыми объектами по умолчанию и при использовании определенных пользователем объектов через SelectObject нужно в конце работы произвести select объектов, которые были в DC изначально (см. пример выше).

2.3 Как рисовать в окно приложения?

Для того чтобы выводить графику в определенное окно вашего приложения нужно сделать буквально следующее:

Получить дескриптор DC, связанный с окном, в которое вы собираетесь рисовать с помощью функции GetDC(). Нарисовать все, что вы хотите, с помощью функций DC и в конце «освободить» контекст с помощью функции ReleaseDC().

Иным образом производится получение/освобождение дескриптора DC при обработке сообщения WM_PAINT — об этом в следующем разделе.

2.4 Когда рисовать в окно приложения? WM_PAINT — что это?

При выводе графики в Windows есть некоторая тонкость, не всегда очевидная новичкам в программировании под среды с графическим интерфейсом. Казалось бы, если нужно что-то отрисовать в окне — получай его контекст и рисуй. Но не все так просто. Стоит свернуть окно или закрыть его часть другим окном — все, что было нарисовано, пропадет.

Дело в том, что Windows не хранит содержимое клиентской части окна. К клиентской части окна относится ВСЕ, кроме заголовка окна и управляющих элементов (controls): меню, панелей инструментов (toolbar), кнопок и т.д. Приложение само должно позаботиться о том, чтобы отрисовывать свои данные в клиентской области, Windows лишь посылает ему уведомление когда это нужно сделать. Делается это посредством посылки окну сообщения WM_PAINT.

Все необходимые действия по полной перерисовке информации клиентской части окна должны вызываться при обработке события WM_PAINT. Важным понятием при обработке этого сообщения является invalid rectangle. Windows определяет invalid rectangle как наименьшую прямоугольную часть окна, которая была «испорчена» и должна быть перерисована заново. Когда система обнаруживает invalid rectangle в клиентской области окна, она генерирует сообщение WM_PAINT. В ответ на сообщение окно может получить структуру PAINTSTRUCT, которая среди прочего содержит координаты invalid rectangle. Это может пригодиться, если есть желание перерисовывать не все окно, а только ту область, что требуется.

При обработке WM_PAINT должна быть вызвана функция BeginPaint, которая снова делает invalid rectangle `нормальным’. Также BeginPaint возвращает дескриптор DC, который должен быть использован для перерисовки клиентской части окна. Нужно иметь в виду, что при обработке WM_PAINT дескриптор DC окна должен быть получен именно с использованием BeginPaint, а освобожден EndPaint, в то время как во всех других случаях отрисовки нужно использовать другие функции (например, GetDC/ReleaseDC). Если invalid rectangle не делается «нормальным» во время обработки этого события (с помощью BeginPaint или ValidateRect), Windows будет слать WM_PAINT окну постоянно.

Пример обработки WM_PAINT:

2.5 Как БЫСТРО рисовать в Device Context?

С каждым DC, предназначенным для графического вывода, связан графический объект bitmap (растровое изображение), который хранит массив пикселей, выводимых на устройство. Для того, чтобы быстро переместить графические данные с одного контекста на другой, можно не повторять все действия по отрисовке, а просто скопировать данные связанного с контекстом bitmap. Для этого даны специальные функции быстрого копирования пикселей (BitBlt, StretchBlt).

Зачем это может быть нужно? Дело в том, что если вы часто рисуете достаточно сложную изменяющуюся картинку средствами GDI, сами операции рисования начинают занимать заметное для пользователя время и возникает неприятный эффект мерцания изображения — когда часть картинки уже перерисовалась, а часть еще осталась старой. Для того, чтобы избежать подобного эффекта новая картинка может создаваться в виртуальном DC в памяти, и потом быстро переносится на экран функциями копирования bitmap.

2.6 Как загрузить и вывести на экран изображение?

Пользуясь базовыми функциями WinAPI, это к сожалению не так-то просто. Никаких встроенных функций по загрузке изображения из bmp файла не предусмотрено, поэтому требуется самостоятельно писать функцию загрузки. Эта функциональность уже тысячу раз реализована, одна из реализаций предлагается вам в примере, который прилагается к данному тексту.

В принципе, если вы не собираетесь выводить загружаемое растровое изображение на экран (а, скажем, только обрабатывать и сохранять), то его можно хранить в совершенно произвольных собственных структурах данных. Однако, если вы хотите иметь возможность быстро вывести ваше изображение на экран, или рисовать в нем средствами GDI, придется хранить его определенным образом. Потребуется создать графический объект bitmap, соответствующий параметрам файла bmp, и загрузить в него данные из файла (пиксели). Пример, как это сделать, содержится в классе DSimpleBitmap в примере MFC_GML3.

Для того, чтобы уметь быстро выводить загруженное изображение на экран, требуется сделать следующее — с помощью функции SelectObject привязать к созданному заранее memory DC загруженный bitmap (вместо default bitmap, создающегося вместе с контекстом) и затем функцией копирования битов вывести в дисплейный контекст, связанный с вашим окном. Пример:

Не забудьте уничтожить все временные объекты, которые создавались (в данном случае — это memory DC). Не забудьте также перед тем как будете уничтожать memory DC, выбрать в него (через SelectObject) объект bitmap, который был создан вместе с контекстом, в противном случае произойдет утечка ресурсов.

2.7 Как нарисовать что-либо на изображении?

Есть как минимум два способа. Первый — это получить указатель на пиксели растрового изображения (вариант как это сделать см. секцию 4.1) и менять их напрямую. Второй — это рисовать на изображении с помощью функций GDI. Для реализации второго варианта нужно создать DC, связать с ним bitmap, на котором хотите рисовать, и затем использовать стандартные функции вывода графики. Пример:


Имейте в виду, объект bitmap может быть одновременно связан только с одним DC.

3 Надстройки над GDI

Для облегчения программирования под WinAPI было создано некоторое количество объектно-ориентированных надстроек для него. В числе самых распространенных — Microsoft Foundation Class Library (MFC) от Microsoft (используемая в MS Visual Studio) и Visual Components Library (VCL) от Borland (используемая в Delphi и C++ Builder). Обе этих библиотеки уже достаточно пожилые, но тем не менее все еще широко распространенные.

С появлением этих (и других) надстроек, люди крайне редко по-прежнему программируют чисто под WinAPI (что в общем-то понятно).

3.1 MFC надстройка над GDI

Для облегчения работы с функциями и структурами GDI в MFC создан набор классов, являющихся обертками для WinAPI структур и дескрипторов.

К их числу относятся CDC, CPen, CBitmap, CFont, CBrush и т.д. Работа с ними практически идентична работе с дескрипторами этих объектов, но несколько удобнее.

Что значит обертками? Это значит, что CPen внутри себя содержит HPEN (доступный как свойство класса) и просто берет на себя некоторые заботы по его созданию, удалению и работе с ним. Похожим образом организованы все обертки.

CDC — это абстрактный базовый класс, у которого есть несколько реализаций — CPaintDC, CClientDC, CWindowDC, CMetaFileDC, каждая должна использоваться в определенных ситуациях.

Работа с графическими фукнциями GDI с использованием MFC несколько упрощается (сравните с примером в разделе 2.2):

К сожалению, никаких средств для загрузки bmp файлов в CBitmap и для простой отрисовки CBitmap в DC в MFC не предоставлено — приходится пользоваться теми же средствами, что и при работе с WinAPI. Обработка WM_PAINT производится практически идентично, за исключением того, что в MFC существует специальный тип CPaintDC, в конструктор и деструктор которого инкапсулированы (встроены) вызовы BeginPaint/EndPaint. Обработка события выглядит следующим образом:

3.2 VCL надстройка над GDI

Visual Components Library (VCL) от Borland делает гораздо более длинный шаг в сторону упрощения работы с графикой.

В этой библиотеке введен класс TCanvas, также являющийся оберткой для HDC (HDC доступен через свойство Handle), но представляющий более высокоуровневый интерфейс для работы с графикой. Переключение режимов производится путем модификации свойств класса TCanvas — Pen, Font, Brush, TextFlags и т.д., что делает переключение режимов рисования значительно проще и прозрачнее и избавляет разработчика от чехарды с SelectObject/GetCurrentObject/DeleteObject. Операции GetPixel/PutPixel реализованы как доступ к двумерному массиву Pixels (что не делает работу с ними более быстрой).

Canvas связан со всеми компонентами VCL, у которых есть клиентская часть, а также с классом TBitmap. Стандартные компоненты Windows такие как кнопки, списки и т.д. Canvas не имеют, так как их полностью отрисовывает Windows. Рисование на Canvas происходит путем вызова соответствующих функций-членов. Пример (сравните с 2.2, 3.1):

Обработка сообщения WM_PAINT происходит без дополнительной заботы о создании DC особым образом (CPaintDC или BeginPaint), просто нужно работать с Canvas перерисовываемого объекта.

Быстрое копирование из Canvas в Canvas осуществляется путем использования функции CopyRect, аналогичной BitBlt, StretchBits.

Загрузка изображения из файла и отображение на экране с использованием VCL значительно упрощается. Растровые изображения, иконки и метафайлы хранятся в соответствующих классах (TBitmap, TIcon, TMetaFile) — наследниках базового класса изображений TGraphic. Для облегчения работы с этими классами в VCL добавлен класс-контейнер TPicture, который может работать с любым из наследников TGraphic, реализуя функциональность загрузки/сохранения и копирования объекта в буфер обмена (clipboard).

В VCL существует еще один класс, облегчающий вывод графического изображения в окно — TImage. TImage — это компонент, содержащий некоторые свойства и параметры, задающие как именно будет отрисовываться изображение в окне приложения. Само изображение хранится в свойстве Picture класса TImage. Стоит иметь в виду, что при использовании TImage VCL полностью берет на себя обработку сообщения WM_PAINT. То есть все, что нарисовано на Canvas компонента TImage, автоматически отображается на экране, когда это требуется — достаточно нарисовать все что нужно один раз.

Загрузка и отображение растровой картинки с помощью TImage показана в примере SDIApp и DelphiBasis, прилагаемых к данному тексту.

4 Как (относительно) быстро обрабатывать изображения?

При написании фильтров для изображения требуется способ доступа к отдельным пикселям. Самый простой способ — сделать это с помощью функций GetPixel/SetPixel в WinAPI и MFC и с помощью двумерного массива TCanvas->Pixels в VCL. Однако так поступать не стоит, поскольку такой способ является чрезвычайно медленным.

4.1 Быстрый способ доступа к пикселям в GDI и MFC

При работе с функциями GDI напрямую, наиболее удобным представляется создание объекта bitmap, к пикселям которого можно обращаться напрямую. Делается это с помощью функции CreateDIBSection. Одним из выходных параметров этой функции является указатель на переменную, куда при создании bitmap будет помещен указатель на массив пикселей — ppvBits. Запомнив этот указатель, приложение получает прямой доступ к пикселям изображения. Обычно использующиеся true color изображения с глубиной цвета 24 bit хранят данные попиксельно в виде массива троек `BGR’ (каждый пиксель — три байта).

Адрес пикселя с координатами (x, y) для изображений такого типа рассчитывается следующим образом:

Microsoft Robotics Developer Studio Пакет для программирования роботов и 3D-моделирования
Zoner Draw Универсальный графический редактор для профессиональной обработки рисунков, карт, чертежей, иллюстраций, веб-графики и прочих изображений. Это экономичное и высокопроизводительное решение подойдет для использования дома, в офисе, а также для корпоративных нужд.
Adobe FreeHand MX Уникальная многостраничная среда для создания сложных иллюстраций и макетов для публикации в печати и в электронных СМИ. FreeHand MX лучшее средство для создания иллюстраций для печати, Интернета и проектов Macromedia Flash. Версия полная, портативная.
FastStone Image Viewer Программа, предназначенная для просмотра и конвертации графических файлов многих форматов.
Fusion Программа создания и последующей обработки изображений с широким динамическим диапазоном (HDR) на основе серии фотографий.
VideoPad Video Editor Видеоредактор, работающий со множеством типов файлов.
SmartDraw Бесплатный графический редактор, позволяющий создавать на базе шаблонов всевозможные диаграммы, организационные схемы, а также планы различных помещений.
Axure RP Pro Быстрое макетирование для приложений web-сайта, ориентированное под каркасные прототипы веб-сайтов. Продукт предназначен для снижения издержек проектирования веб-сайтов. Это решение поможет быстро в визуальном режиме создать рабочий прототип будущего сайта, затем выгрузить прототип в html и просмотреть его через браузер. Качество вполне приемлемо для дальнейшей постановки задач дизайнерам и программистам, а также для понимания заказчика конечного результата. Интерфейс программы аналогичен Microsoft Office 2003.
DrawMe Программа предназначена для создания диаграмм и иллюстрации.
Gnuplot Свободная программа для создания двух- и трёхмерных графиков.Gnuplot имеет собственную систему команд, может работать интерактивно (в режиме командной строки) и выполнять скрипты, читаемые из файлов. Также используется в качестве системы вывода изображений в различных математических пакетах: GNU Octave, Maxima и других.
Dia С помощью Dia можно создавать множество типов диаграмм: диаграммы баз данных, диаграммы сущность-связь, потоковые диаграммы, сетевые диаграмм и другие. Возможно расширение при помощи новых типов объектов, которые описываются на языке XML. Dia является частью проекта GNOME Office.
WinTopo Высококачественная программа для конвертирования файлов растровых изображений в форматах TIF, JPG, PNG, GIF, BMP в удобные для использования векторные форматы совместимые с CAD и GIS программами.
Fractal Explorer Программа для создания фрактальных изображений.
AutoTrace Программа для преобразования растровых графических изображений в векторные. Целью проекта AutoTrace является разработка свободно распространяемого аналога CorelTrace и Adobe Streamline. По некоторым параметрам он даже превосходит их. Изначально создававшийся как модуль GIMP, теперь AutoTrace является самостоятельной программой.
Photobie Графический редактор с большим набором функций аналогичных Photoshop, плюс захват скриншотов с экрана и редактирования фото.
Artweaver Графический редактор. Программа умеет работать с графическими файлами в форматах BMP, GIF, JPEG, JPG, JPE, PCX, PNG, TGA, VDA, ICB, VST, TIF, TIFF и AWD.
RonyaSoft CD DVD Label Maker Программа содержит шаблоны готовых обложек и визуальный редактор, который позволяет полностью контролировать результат.
Magic Particles Редактор спецэффектов, позволяющий быстро и наглядно создавать визуальные спецэффекты на основе систем частиц.
Helicon Filter Free Инструмент для профессионального постпроцессинга цифровых фотографий. Cпециально разработан для опытных пользователей цифровых фотоаппаратов, которые хотят получить высококачественный результат, но не хотят тратить много времени, используя Photoshop.
Tile Builder Photoshop-совместимый плагин для генерации бесшовных фоновых изображений, разработанный компанией ImageSkill. Эта программа особенно пригодится дизайнерам, художникам, разработчикам web – сайтов, фотографам и энтузиастам компьютерной графики.
LiteDesign LiteDesign является свободным CAD инструментом для поэтапного проектирования освещения.
3D Master Программа для визуального создания 3D игр на русском языке. 3Д Мастер поможет при планирование дома показать его как снаружи, так и внутри, позволив побродить по нему в 3D.
DAVID-Laserscanner Программное обеспечение, с помощью которого можно выполнить трехмерное сканирование объектов и преобразовать полученный результат в модели, которые затем можно импортировать в 3D-редакторы.
Snap Clipboard Утилита для создания снимок экрана, по возможности способен создавать снимки как в полноэкранном виде, так и в объектном, после захвата экрана на дисплее отображает специальный прямоугольник, который показывает, где именно произошел снимок.
FotoTagger Программа для аннотирования целых изображений (в формате JPEG) и их отдельных фрагментов. Можно добавлять легко скрываемые комментарии, описывающие отдельные элементы или части изображения, прямо поверх картинки. Аннотации можно скрывать, поэтому они не портят оригинальное изображение.
Diagram Designer Дизайнер диаграмм для пользователей Windows. Если Вы никак не можете привыкнуть к DIA, и не хотите пользоваться нелицензионным ПО, попробуйте достаточно легкий и функциональный редактор.
IrfanView IrfanView был первой программой просмотра для Windows в мире с поддержкой анимированных GIF файлов, был одной из первых программ просмотра в мире с поддержкой многостраничных TIF, первая программа с поддержкой Multiple ICO.
CADE Компактный, но мощный двухмерный векторный редактор, сравнимый по функционалу с Visio. Этот бесплатный редактор используется как в конечных продуктах, так и в библиотеках для разработчиков, которые обеспечивают открытый интерфейс к свойствам и методам редактора.
Bibble Pro Коммерческий RAW-конвертер, который, как и LightZone, имеет версии под Windows и под Linux, называется Bibble Pro.
Gadwin PrintScreen Простая и очень удобная программа для снятия скриншотов. Несмотря на свой небольшой размер, утилита обладает не только всем перечнем необходимых настроек для захвата изображения, но даже располагает набором функций для его редактирования. Таким образом, наличие Gadwin PrintScreen на Вашем ПК полностью исключает необходимость пользования другими графическими редакторами для обработки скриншота.
JDraw Графический редактор растровых изображений, специально созданный для редактирования небольших изображений, используемых для украшения Web-страниц.
Axialis IconWorkshop Программа, позволяющий создавать, конвертировать и изменять иконки в операционных системах Windows и Macintosh. Поддерживается работа с шаблонами из Adobe Photoshop.
OpenLaszlo Архитектура расширенного клиентского приложения, которая использует в качестве среды размещения Macromedia Flash. OpenLaszlo является альтернативой Macromedia Flash Professional. Технология OpenLaszlo используется для создания логики языка сценариев JavaScript и, по сравнению с традиционной Flash-разработкой, предлагает явные преимущества, в том числе, расширенную систему условных ограничений интерфейса пользователя, объектно-ориентированную методологию дизайна и встроенную поддержку web-сервисов и различных разновидностей Remote Procedure Call, RPC (Удаленный вызов процедур).
pChart PHP-библиотека для создания графиков, гистограмм и диаграмм. В отличие от большинства схожих библиотек, pChart бесплатна (распространяется под GPL лицензией).
Irrlicht Engine Графический межплатформенный 3D-движок для создания 3D-приложений реального времени, разрабатываемый человеком по имени Nikolaus «Niko» Gebhardt. Pаботает с Microsoft VisualStudio6.0™, VisualStudio.NET 7.0-8.0™, Metrowerks Codewarrior, Bloodshed Dev-C++ (с компилятором g++3.2-4.0), Code::Blocks.
FreeMind Свободная программа для создания и редактирования карт памяти (mind maps). FreeMind написана на Java и распространяется согласно GNU General Public License. Программа обладает расширенными возможностями экспортирования. Экспорт XHTML позволяет создать карту-схему с разветвленной структурой и ссылками на внешние источники.
Jmol Свободный просмотрщик молекул для студентов, учителей и исследователей, написаный на Java. Поддерживает множество форматов, возможно использование скриптов, использование в качестве java апплета.
Crystal Space Межплатформенное программное обеспечение, средство разработки трехмерной графики в режиме реального времени для отдельных игр.
Win Graphics Программа строит графики по заданным функциям. Есть возможности масштабирования. Типа MathCad’а, только лучше.
Sweet Home 3D Бесплатная программа, работающая на Java. Имеет открытый исходный код. Во время работы можно использовать 3D-модели, которые в большом количестве представлены на официальном сайте и доступны для бесплатной загрузки. Эта программа дает возможность предварительного просмотра интерьера в 2D (вид сверху), а также можно просмотреть конечный вариант расстановки мебели в 3D. Но качество визуализации оставляет желать лучшего.
Terragen 2 Technology Preview Программа Terragen представляет из себя редактор ландшафтов.
SP_STITCHER Автоматический сшиватель панорамных изображений, версия 2.00.Самый мощный, самый быстрый, самый компактный.Сделан полностью на 32 разрядном MMX ассемблере.Предназначен для создания сферических панорам из набора трех снимков формата (fisheye).Использована эксклюзивная технология PRects (подготовленных квадратов).
Maya Программа для объемного моделирования
Art of Illusion Свободный пакет для трехмерного моделирования. Простой и удобный.
CorelDRAW Graphics Suite X3 Пакет CorelDRAW Graphics Suite X3 сочетает в себе высокую функциональность при решении самых различных задач в области графического дизайна, высокую скорость, простоту в использовании и доступность
Blender Пакет для создания 3D графики (программа бесплатная и с открытым исходным кодом), включает в себя средства моделирования, анимации, рендеринга, пост производства видео, а также может использоваться для создания интерактивных игр. Аналог 3D Max, Maya.
OpenOffice.org Draw Векторный графический редактор, по функциональности сравнимый с CorelDRAW, входит в состав OpenOffice.org. Пакет включает полнофункциональные «коннекторы» между фигурами, которые могут использовать разнообразные стили линий и позволяют рисовать чертежи, например блок-схемы. Аналог Adobe Illustrator, CorelDRAW.
Jahshaka Программа для создания, редактирования и наложения эффектов на видео в реальном времени. Аналог Adobe After Effects, Premiere Pro. Jahshaka использует технологию OpenGL, обеспечивая высокий уровень интерактивного взаимодействия с редактируемым объектом и отображая все изменения в реальном масштабе времени. Эту программу трудно отнести к какой-либо одной категории: это и редактор, и набор спецэффектов, и программа для подготовки коллажей.
Inkscape Редактор векторной графики. Аналоги Illustrator, Freehand, CorelDraw или Xara X. Использующий стандарт W3C под названием Scalable Vector Graphics (SVG).
Sodipodi Хороший, бесплатный векторный редактор, маленький по размеру и возможностям, но очень удобный интерфейс, внутренний формат .SVG (можно смотреть через Adobe SVG Viever), поддерживает сохранение в .png что очень удобно. Аналог CorelDraw.
Hugin Кроссплатформенная программа, позволяющая автоматизировать процесс «сшивания» панорамных фотографий. Аналог Photoshop, ACDSee.
Paint.NET Программа для работы с изображениями и фотографиями, разработанная, чтобы использоваться на компьютерах под Windows. Программа поддерживает слои, неограниченную отмену выполненных операций, специальные эффекты, и имеет большое разнообразие полезных и мощных инструментальных средств. Аналог Photoshop, ACDSee.
XnView XnView по многим параметрам превосходит любой просмотрщик / конвертор графических файлов. Программа XnView может производить такие операция над картинками как: обрезка, изменение размера изображения/холста, печать, изменение гаммы-контраста-яркости-баланса и многое многое другое.
Eovia Carrara Инструменты для работы с трехмерной графикой. Пакет Carrara 5 предлагает набор инструментов, для дизайнеров и 3D-аниматоров. В нем представлены средства 3D моделирования, анимирования и визуализации трехмерных сцен.
GIMP GIMP — многоплатформенное программное обеспечение для работы над изображениями. GIMP является акронимом, означающим GNU Image Manipulation Program. Редактор GIMP пригоден для решения множества задач по изменению изображений, включая ретушь фотографий, объединение и созданий изображений.
Dia Кроссплатформный свободный редактор диаграмм, может быть использован для создания различных видов диаграмм
ppvBits + y * iBytesPerLine + x * 3
(1)

Здесь iBytesPerLine — это длина строки изображения в байтах, которая отнюдь не всегда равна ширине изображения, умноженной на три. Для увеличения производительности работы с изображением адреса начал строк выравниваются по границе процессорного слова (4 байта), поэтому если ширина, умноженная на 3, не кратна четырем, каждая из строк дополняется несколькими дополнительными байтами . Рассчитать длину строки в байтах можно по следующей формуле:

iBytesPerLine = (iW >- 4;
(2)

Именно таким образом быстрый доступ к пикселям изображения реализован в классе DSimpleBitmap в примере MFC_GML3.

4.2 Быстрый способ доступа к пикселям в VCL

Для того чтобы получить прямой доступ к указателю на пикселы изображения, хранящегося в TBitmap, нужно использовать свойство ScanLine. Это массив указателей на строки пикселей изображения.

Доступ к пикселю с координатами (x, y) осуществляется следующим образом:

Формат хранящихся в изображении данных задается свойством PixelFormat объекта TBitmap. Для полноцветных изображений (PixelFormat = pf24bit) каждому пикселю соответствует три байта, задающие интенсивности каждого из цветовых каналов — ‘BGR’.

Как подобным образом реализовать фильтрацию изображения, показано в примерах SDIApp и DelphiBasis.

Использование графических эффектов в приложениях UWP с помощью Win2D

Знакомьтесь: Win2D это легкое в использование Windows Runtime API для более удобного использования возможностей DirectX. Прорисовка графики осуществляется с ускорением GPU. Win2D доступно для разработчиков C#, C++ и VB и в Windows 8.1 и в Windows 10.

С помощью Win2D вы сможете рисовать фигуры, линии, текст и изображения, а также добавлять ко всему этому различные эффекты. Кроме того, можно добавить какие-то эффекты к видеоизображению.

Предлагаю рассмотреть на примерах основной функционал библиотеки.

Установить Win2D.uwp можно из Visual Studio с помощью диспетчера пакетов NuGet. Github-страничка этого open-source проекта находится здесь. Англоязычная документация здесь: Win2D documentation

После установки в заголовок XAML страницы можно добавить:

А в разметку страницы элемент управления CanvasControl:

Это не тот же самый элемент Canvas, который является элементом компоновки страницы и может в качестве хоста содержать в себе другие элементы. Какое-то сходство между Canvas и CanvasControl есть, но производительность совершенно разная.

При прорисовке элемента CanvasControl происходит событие Draw, которому в примере назначен обработчик события CanvasControl_Draw. Официальный пример предлагает нарисовать для начала фигуру (эллипс) и текст:

Вот что получится:

Для того, чтобы избежать утечек памяти, необходимо всегда корректно уничтожать ресурсы. Делается это, как правило, при выгрузке страницы:

Пока что ничего необычного. То же самое можно нарисовать и используя фигуры XAML. Кстати, примеры рисования в обычном XAML вы можете найти здесь: Draw shapes

Поработаем с изображениями. Это гораздо интереснее. Я добавил в проект файл mydog.jpg и выбрал в свойствах действие при сборке «Содержание» (если быть точным, то даже не выбирал, — оно выбралось само по умолчанию).

За изображения в Win2D отвечает класс CanvasBitmap из пространства имен Microsoft.Graphics.Canvas. Добавим в наше приложение переменную с именем cbi:

Загрузка картинки происходит во время события элемента Canvas названием CreateResources, поэтому в наш XAML код добавим это событие:

Сама загрузка происходит с помощью следующего кода:

Так как она происходит асинхронно, то нам предлагается вынести ее в отдельный таск:

TrackAsyncAction в данном случае требует чтобы таск CreateResourcesAsync завершился до окончания CreateResources. Остается загрузить в Canvas:

Загрузилось, но не особо пока что интересно просто отображать картинку. Добавим всего пару строк кода и получим эффект размытия по Гауссу

Полный списко эффектов доступен на странице описания пространства имен Microsoft.Graphics.Canvas.Effects документации. Кстати, эффекты также можно создавать еще и с помощью Lumia Imaging SDK. Исходный код Lumia-imaging-sdk можно тоже найти на GitHub. Кроме того, какие-то эффекты доступны с помощью пространства имен Windows.UI.Composition.

Иногда возникает необходимость отобразить графику не сразу, а во время исполнения программы. Сохранить ее в файл, вывести на экран или получить массив пикселей. Такой вариант работы называется Offscreen drawing.

Скажем, вот пример, в котором совсем не используется XAML элемент CanvasControl, а используется простой элемент image

Обработать картинку и отобразить ее, добавив эффект насыщения, можно так:

Мне так даже больше нравится (хотя о сравнении производительности сказать ничего не могу)

Для того чтобы составить небольшую композицию и наложить текст на картинку нам понадобятся пространство имен:

И подобный сниппет:

Объединить 2 изображения можно с помощью эффекта blend:

Некоторые эффекты можно комбинировать. С помощью следующего сниппета, комбинирующего множество эффектов можно получить эффект свечения текста

Интересный текстовый эффект, который очень часто ассоциируется с Win2D это анимационный эффект горящего текста.

Прямые ссылки на BurningTextExample.xaml и BurningTextExample.xaml.cs примера я, пожалуй, даже оставлю здесь: BurningTextExample.xaml / BurningTextExample.xaml.cs.

Точно также как и в случае с UWP Community Toolkit, есть возможность скачать приложение с примерами использования и для Win2D. Приложение называется Win2D Example Gallery. Исходный код приложения находится на github.

Лично мне больше всего понравилась следующая картинка:

Как оказалось, она полностью нарисована с помощью DrawLine, DrawEllipse, DrawCircle и т.п.

Библиотека обновляется регулярно и поэтому можно ожидать новые красивые эффекты.

Компьютер для графики

Компьютерную графику можно условно разделить на трехмерную и двухмерную. Трехмерная состоит из каркаса и текстуры, а также иногда из заданных физических свойств. Двухмерная графика – это обычные картинки. Чтобы обрабатывать 3D-сцены, нужен мощный компьютер. Для обычной 2D-графики большая мощность не нужна. Здесь гораздо важнее наличие правильного монитора, а лучше двух..

Типы 2D-графики

  • Векторная – такие изображения хранятся в виде геометрических фигур, прямых, точек и окружностей. Удобство данного типа графики в том, что с ней проще работать в дальнейшем: не теряется качество при увеличении, можно легко редактировать после создания. Это сырье для создания растровых изображений.
  • Растровая – самый популярный тип изображений, именно на таком принципе строится картинка на мониторе. Представляет собой набор пикселей, распределенный по строкам и столбцам. Редактировать такое изображение гораздо сложнее, но оно гораздо меньше весит. Все картинки, которые вы видите в Интернете, – это растровая графика.
  • Фрактал – это сборное изображение, оно состоит из маленьких кусочков, которые можно двигать и редактировать по отдельности. Ярким примером являются многослойные картинки из графического редактора – например, Photoshop.

Создание всех типов изображений не очень затратно для ресурсов ПК. Наиболее требовательный процесс – это обработка фотографий: чем выше разрешение, тем больше времени нужно. Если компьютер со слабым процессором, возникнут трудности при накладывании фильтров. Визуализация, в зависимости от компьютера и поставленной задачи, может занять 30 секунд или несколько минут.

Популярные приложения для 2D графики

Их много. В любом компьютере на Windows есть встроенный графический редактор Paint.net. Он прост и понятен, но профессионалы редко им пользуются из-за ограниченных возможностей.

Десять лет назад мир 2D- графики между собой делили два титана – Photoshop и Corel DRAW. Теперь у этих редакторов появилось много конкурентов. В нашем списке – самые популярные приложения, на которых делается большинство картинок. Одни из них используются для обработки изображений, другие – для рисования, третьи – для создания векторной графики.

Достоинство этой программы в том, что, в отличие от остальных в этом списке, она бесплатна. Отлично подойдет новичкам, так как содержит богатый набор предустановленных кистей, фильтров, градиентов и других инструментов. Работает с графическими планшетами.

Adobe Photoshop

Самая популярная программа для редактирования изображений, ее название стало нарицательным. Разрабатывалась как платформа для ретуширования и обработки фотографий, что понятно из названия. В ней тоже можно рисовать, но для этих целей лучше выбрать другое приложение Adobe – Illustrator. Так как это программы одного разработчика, то они легко взаимодействуют друг с другом.

Adobe Illustrator

Рассчитано на работу с векторной графикой. В нем можно создавать новые рисунки с нуля и делать текстуры. Это очень удобно, если вы занимаетесь еще и 3D-моделированием. Доступно взаимодействие с другими продуктами Adobe, например, After Effect.


Autodesk SketchBook Pro

Инструмент с очень богатым функционалом. SketchBook Pro рассчитан на рисование, тут можно создать эскиз и отдельно его раскрасить. Учитывая уровень компании Autodesk, неудивительно, что в программу заложено огромное количество возможностей. Чтобы раскрыть все ее прелести, потребуется графический планшет, желательно с функцией чувствительности нажима.

Corel Painter

Еще одно приложение для рисования от не менее именитого разработчика. Оно имитирует все инструменты художника. Можно смешивать цвета, выбирать фломастеры, карандаши, кисти, типами краски и так далее.

Corel DRAW

Мощная платформа для создания векторной графики. За почти 30 лет существования программа обросла всевозможными плагинами и дополнениями. Это универсальный инструмент для работы с изображениями.

3D-графика

Работа с трехмерными проекциями подразумевает мощное железо. Самой емкой частью процесса создания сцены является рендеринг, для него нужно больше всего ресурсов. Для работы с большими проектами потребуется мощный компьютер с большим запасом оперативной памяти.

Рендеринг – это визуализация, в которую входит наложение текстуры на каркас и применение эффектов. После этого компьютер «фотографирует» созданную сцену и выдает вам изображение.

Какой нужен компьютер для работы с графикой

Для обычного рисования мощное железо не требуется. Средний компьютер с легкостью справляется с обработкой фотографий, но чаще всего двухмерная графика идет рука об руку с трехмерной. Подробнее о том, как выбрать компьютер для 3Д-графики и моделирования, читайте тут. Перед тем, как выбрать ПК, взглянем на системные требования к программам, которые позволяют работать с 2D-графикой.

Системные требования

Через тире указаны средние и максимальные требования.

Процессор Оперативная память Видеокарта Место на диске
GIMP одноядерный, от 700 MHz 512 MB 64 MB памяти и поддержка 3D 100 MB
Adobe Photoshop двухъядерный, от 2,0 GHz 2–8 GB от 512 MB памяти с поддержкой OpenGL 2.0 3,1 GB
Adobe Illustrator двухъядерный, от 2,0 GHz 2–8 GB 1–2 GB памяти с поддержкой OpenGL 4.0 2 GB
Autodesk SketchBook Pro двухъядерный, от 2,5–2,9 GHz 4 GB от 256 MB с поддержкой OpenGL 2.0 4 GB
Corel Painter четырехъядерный, от 2,0 GHz 2-8 GB 1 GB памяти с поддержкой OpenGL 3.2 1 GB
Corel DRAW 2–4 ядра, от 2,0 GHz 2 GB 1 GB памяти с поддержкой OpenGL 3.2 1 GB

Как выбрать компьютер для графики

Как видите, программы не требовательны. Самый трудоемкий для компьютера процесс обработки фотографий – это применение фильтров. Обычные рисунки и векторная графика – маленького размера, и с ними проще работать. Например, зеркальные фотоаппараты Nicon и Canon имеют 24 мегапикселя, это своеобразный стандарт. Изображения получаются размером 6000х4000 пикселей. И это не предел.

Чтобы применить фильтр к такому гиганту, нужна стабильная работа процессора. На слабом компьютере это может занять несколько минут. Но если вы соберетесь рендерить трехмерную сцену на слабом ПК, то процесс может занять несколько дней и даже неделю.

Теперь обозначим, какими должны быть компьютеры для графики и дизайна 2020 года выпуска.

Какой нужен процессор?

Если вы не планируете работать с трехмерной графикой, то вам подойдет камушек начального уровня, например, Intel Core i3–8100 или Intel® Core™ i5-8400. Это четырех и шестиядерные процессоры с хорошей частотой 3,6 и 2,8 GHz. Такой мощности с лихвой хватит для работы с изображениями.

Если вы собираете профессиональную графическую станцию для работы с трехмерными объектами и рисования, то процессор должен быть мощнее – хотя бы 4 ядра с той же частотой. Компьютеры для графики, начиная с 2020 года, должны быть оборудованы камушком Intel Core i5–9600K, это решение начального уровня для профессиональной станции.

Для активной работы с тяжелыми трехмерными сценами нужен мощный процессор. Особого внимания заслуживает Intel Core i9-9820X – процессор с особой серверной мощностью. На данный момент это одно из топовых решений от компании Intel, мощнее только серверные процессоры Xeon. Intel Core i9-9820X имеет 10 ядер и 20 потоков с тактовой частотой 3300 MHz. Топовый Xeon работает на частоте до 4,0 GHz и имеет 28 ядер с 56 потоками.

Какая нужна видеокарта?

Если вы новичок и выбираете машину только для рисования, то подойдет любая видеокарта. Практически все они поддерживают несколько мониторов. Оптимальным вариантом для рисования будет новенькая NVIDIA GeForce 1060. Более продвинутое решение – NVIDIA GeForce RTX 2060 или 2070. На них еще и поиграть можно будет.

Новая RTX серия имеет в архитектуре дополнительные ядра CUDA, которые увеличивают вычислительную мощность. Они позволяют быстрее и эффективнее производить рендеринг изображений, видео и трехмерных сцен. Эта технология позволяет сделать из игровой видеокарты профессиональную для обработки изображений.

Для профессионалов в области графики создана серия NVIDIA Quadro. Эти видеокарты нужны для работы с тяжелыми трехмерными сценами и считаются самыми технологически продвинутыми в мире. В таблице представлены их краткие технические характеристики. Это профессиональное оборудование, рассчитанное на сверхвысокие нагрузки.

С выходом игровых карточек RTX серии добавились в модельный ряд также QUADRO RTX. Их основное отличие от обычных P и GV серий в том, что они имеют еще больше ядер CUDA. NVIDIA пошла тем же путем, что и раньше. Они выпустили полный модельный ряд карточек – от самых простых до самый тяжелых.

QUADRO P1000 QUADRO P2000 QUADRO P4000 QUADRO P5000 QUADRO GV100 RTX 4000 RTX 5000 RTX 6000 RTX 8000
Видеопамять (GB) 4 5 8 16 32 8 16 24 48
Тип видеопамяти GDDR5 GDDR5 GDDR5 GDDR5X HBM2 GDDR6 GDDR6 GDDR6 GDDR6
Ядер CUDA 640 1024 1792 2560 5120 2304 3072 4608 4608
FP32 Performance (TFLOPS) 1.894 3.0 5.3 8,9 14,8 7,1 11,2 16,3 16,3
Потребляемая мощность (W) 47 75 105 180 250 160 265 295 295
Кол-во разъемов для мониторов 4 4 4 5 4 4 4 4 4
  • Видеопамять нужна для развертки в ней текстур во время рендеринга. Рендеринг на видеокартах гораздо быстрее, однако ограничен количеством памяти. По этой причине рендеринг чаще ложится на плечи процессора, ведь расширить оперативную память проще и дешевле.
  • Тип видеопамяти определяет скорость загрузки и выгрузки данных. Чем новее технология, тем выше производительность.
  • Количество ядер CUDA. Эта технология позволяет выполнять вычисления с революционной скоростью. Благодаря ей уже несколько лет можно рендерить на видеокарте, что значительно экономит время. Количеством ядер определяется мощность и скорость вычисления задач. Технология только сейчас добралась до игрового модельного ряда и заиграла новыми красками в профессиональных карточках.
  • FP32 Performance – это синтетический показатель обрабатываемой информации в секунду. Чем больше – тем лучше.
  • Потребляемая мощность – это количество ватт, которое использует видеокарта во время работы. Чем больше число, тем мощнее нужны блок питания и система охлаждения.

Главный показатель здесь – количество памяти. Занимаясь 3D графикой, вы должны определить задачи, которые собираетесь выполнять. Если вам предстоит работа с большими сценами, в которых используются текстуры высокого разрешения, то нужна видеокарта с большим количеством памяти. В этом плане NVIDIA Quadro RTX 8000 бьет все рекорды. Вы сможете загрузить в нее сцену объемом до 48 GB.

Вместо NVIDIA Quadro часто используют NVIDIA GeForce RTX 2070. Это альтернативное решение, если компьютер для графики и дизайна будет использоваться и для игр. Она дешевле линейки Quadro, обладает хорошим запасом памяти, однако производительность ее в рендеринге ниже. Зато 2070 более универсальна, в играх покажет больший прирост мощности.

Сколько нужно оперативной памяти

Если вы собираетесь заниматься только двухмерной графикой и рисованием, то вам хватит 4 GB. Но лучше ставить 8 GB – это минимум на компьютере для работы с графикой 2020 года выпуска.

Для работы с трехмерными объектами нужно много памяти. Тут, как и с видеокартами, важны ваши задачи. 3D-модели бывают разные: если собираетесь делать игровые объекты, то хватит и 8 GB, а если планируете создавать трехмерную реалистичную графику с последующим превращением ее в видео, то нужно не менее 32 GB, а то и все 64.

Чтобы ускорить работу, нужно распределить память по слотам. Например, 2х8 GB работают медленнее, чем 4х4 GB. Поэтому нужна материнская плата с максимально большим количеством слотов под оперативную память. Количество оперативной памяти может быть ограничено процессором, выбирайте подходящую модель.

Нужен ли SSD для работы с графикой?

Для работы с двухмерной графикой SSD не обязателен, но сложно представить современный компьютер без этого помощника. В идеале лучше применять тандем из трех жестких дисков – 2хSSD и HDD.

SSD обычно имеют меньшую емкость, их нужно использовать для установки системы, программ и игр, а на HDD записывать файлы для длительного хранения. Второй твердотельный нужен под кеш программ обработки 3D сцен и последующей их конвертацией в видео, это если вы ними занимаетесь.

Компьютеры для графики 2020 года обладают сверхбыстрым SSD форм-фактора M.2. Такие накопители до 5 раз быстрее обычных SSD SATA. Самым продвинутым в этом плане является Samsung PRO и Kingston A1000. Это самый быстрые накопители на рынке.

Как выбрать монитор

Графические станции для 3D графики не могут раскрыть свой потенциал без хорошего монитора. Самый важный показатель – цветопередача. Есть несколько типов матриц, но самая лучшая дли рисования работы с графикой – IPS. Они немного дороже остальных, характеризуются большей задержкой, но идеальны для редактирования изображений.

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

Монитор должен быть большой и с максимальным разрешением. Самый минимум – Full HD, но в идеале – 4К или 2К. Если два монитора с таким большим разрешением – для вас роскошь, то можно взять основной с высоким разрешением и дополнительный с меньшим.

Компьютеры для графики

Профессиональные графические станции

Попробовать рисовать можно на обычных машинах, предназначенных для дома или офиса. Если хотите развиваться в этой сфере, лучше купить специальные компьютеры для графики и дизайна.

HYPERPC G1000 оборудован мощным процессором с шестью ядрами и частотой 2,8 GHz. Достаточно мощная видеокарта позволит работать со сценами весом до 2 GB – главная особенность сборки. Это профессиональный компьютер для графики 3D начального уровня.

HYPERPC G2000 немного мощнее своего собрата, тут более производительные процессор и видеокарта. Камушек Intel Core i5-9600K имеет 6 ядер, тактовую частоту 3,7 GHz с возможностью разгона. Видеокарта NVIDIA Quadro P1000 справится со сценами весом до 4 GB. Оба ПК оборудованы быстрым SSD SATA 3 и ёмким HHD.

Если хотите купить топовый компьютер для графики, выбирайте HYPERPC G4000. Эта рабочая станция оборудована мощным процессором Intel Core i9-9900K. Он справится с рендерингом самых сложных сцен. Количество оперативной памяти 32 GB, это не ограничит вас в качестве используемых текстур. Видеокарта позволит рендерить сцены весом до 8 GB.

HYPERPC G6000 – одна из лучших сборок для графического дизайна от HYPERPC. Процессор Intel Core i9-9900X работает на 10 ядрах и имеет 20 вычислительных потоков, тактовая частота этого монстра – 3,5 GHz. Изюминкой сборки является профессиональная инженерная видеокарта NVIDIA Quadro P4000. 8 GB памяти позволят вам отказаться от рендеринга на процессоре. Оба топовых системных блока работают на двух накопителях – SSD M.2 и HDD. Сверхскоростное хранилище ускоряет работу с трехмерными моделями в несколько раз.

Быстрая работы с графикой в среде windows

Компьютерная графика, чуть более десяти лет назад бывшая если не экзотическим, то довольно специальным приложением компьютера, сегодня повсеместна.

Всякий, впервые сталкивающийся с компьютером, уже в самом начале обучения (если курс специально не построен так, чтобы ограничиться на первых порах программами с текстовым или псевдографическим интерфейсом), скорее всего, встретится с графическим терминалом, отображающим различные графические элементы (включая и текстовую информацию, также отображающуюся в графическом режиме средствами компьютерной графики).

Элементарная обработка (создание и редактирование) изображений (как векторных, так и растровых) входит в число приложений, перечисленных в « Обязательном минимуме содержания образования по информатике » в качестве обязательных к освоению в курсе средней школы.

Предметность обучения предполагает, что учащийся « узнает » в создаваемых или редактируемых им картинках при изучении обработки изображений подобие уже знакомых ему элементов графических интерфейсов. Чтобы это счастливое узнавание произошло, представляется целесообразным включить некоторые первоначальные сведения о компьютерной графике уже во введение в предмет, которым начинается его изучение. К сожалению, не все учебники это реализуют, поэтому преподавателю могут потребоваться некоторые дополнительные усилия, но, на самом деле, небольшие, поскольку наглядный материал « под рукой » в любом компьютерном классе.

Векторное и растровое кодирование изображений

Способы кодирования графических данных делятся на две категории: растровый (точки равномерно размеченного прямоугольника) и векторный (описания линий и фигур, составляющих изображение).

Например, растровое изображение окружности может быть таким: « заполняем квадрат 5х5: белая точка (Б), черная точка (Ч), Ч, Ч, Б, Ч, Б, Б, Б, Ч, Ч, Б, Б, Б, Ч, Ч, Б, Б, Б, Ч, Б, Ч, Ч, Ч, Б ». (Более умные « форматы со сжатием », возможно, позволят сократить запись до чего-нибудь, подобного: « заполняем квадрат 5х5: Б, 3Ч, Б, 3(Ч, 3Б, Ч), Б, 3Ч, Б », а то и еще более компактно, но суть не в этом).

Векторное ее изображение совсем другое: « черная окружность с центром в (3,3), радиусом 2 и толщиной линии 1 ».

Важно понимать, что большинство компьютерных графических устройств сегодня — и терминалы, и сканеры, и принтеры — по своей природе растровые. Исключение составляют только графопостроители (плотерры) и редко доступные в учебных условиях их промышленные « кузены » (такие, как фрезерный станок с числовым управлением).

Соответственно, изображение, вне зависимости от его собственной природы (векторной или растровой), будет при отображении преобразовано в растр и доступно человеческим чувствам в растровой форме (даже если растр почти незаметен, как на дисплеях с высоким разрешением, или вообще имеет сетку ниже порога восприятия, как при печати на качественных струйных или лазерных принтерах). И указанные два способа вполне могут привести к неотличимому результату.

Применение векторной и растровой графики

Разница может проявиться тогда, когда мы начнем обрабатывать элементы изображения.

Векторное изображение может без ущерба масштабироваться (увеличиваться или уменьшаться), причем эта операция обратима. В приведенном примере мы можем без труда увеличить векторную окружность в пять раз: « черная окружность с центром в (15,15), радиусом 10 и толщиной линии 5 », и она останется окружностью.

А вот растровое изображение при увеличении обнаружит лишь свой растр в увеличенном виде (и на окружность наш пример похож уже будет мало). Более того, операция уменьшения (или увеличения в нецелое число раз) растрового изображения уже не является обратимой: информация при осуществлении такой операции безвозвратно теряется.

Кроме того, векторное изображение, содержащее более одного элемента (например, изображение двух пересекающихся окружностей), может быть разъято на элементы без каких-либо потерь. С растровым изображением такое, в общем случае, невозможно: программа « не знает » об элементах изображения и о принадлежности тех или иных точек отдельным элементам.

В общем случае, векторное кодирование хорошо подходит для работы с чертежами, схемами, картами, диаграммами, графиками и т.п., а растровое — для обработки фотографий и рисунков. Векторное изображение может быть без ущерба для восприятия преобразовано в растр, в то время, как обратное преобразование в общем случае проблематично (хотя есть программы, позволяющие с той или иной точностью распознавать графические образы). Векторное кодирование часто компактнее растрового, но его отображение требует больших вычислительных ресурсов [21] .

Пример, который всегда перед глазами пользователя компьютера — шрифты. Когда точно известен масштаб, в котором будет отображаться текст, часто используются растровые (« фиксированные ») шрифты, представляющие собой набор растровых изображений отдельных букв и других символов используемого алфавита (например, растровые шрифты используются видеокартой, работающей в текстовом режиме, но также часто и как элемент графического интерфейса). Их применение позволяет отображать символы с недостижимой иным способом четкостью, но, если нужно более одного размера шрифта, потребуется трудоемкая работа по разработке нескольких таких шрифтов.

Когда необходимо свободное масштабирование шрифтов, используются векторные шрифты (на самом деле, большинство масштабируемых шрифтов — это библиотеки программ, « рисующих » соответствующие буквы, часто — с учетом важности их отдельных элементов для восприятия; но разница в данном случае несущественна). Качество отображения мелкого кегля или на экране с низкой разрешающей способностью у них ниже, но они универсальнее.

Прочие элементы графических пользовательских интерфейсов также используют как векторную (большинство органов управления и большинство элементов оформления окон), так и растровую (пиктограммы-« значки ») графику.

Свободные программы для работы с векторной графикой

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

очень простой векторный редактор Xfig для оконной системы XFree86,

Sodipodi (обычно поставляется со всеми операционными системами, включающими среду GNOME ),

Kontour (компонент популярного « офисного » пакета KOffice )

OpenDraw (входящая в пакет OpenOffice.org ).

Рекомендуется при возможности хотя бы вкратце ознакомиться с каждой из них, чтобы понять, какая лучше подходит для конкретного учебного курса. В этом разделе далее будет обсуждаться OpenDraw , исходя из уже описанных преимуществ, но это ни в коей мере не означает непригодность для учебных целей прочего из перечисленного.

Редактор векторной графики OpenDraw

Общие характеристики OpenDraw

Как и остальные компоненты пакета « OO.o », OpenDraw использует в качестве « родного » формата специально разработанное XML -приложение (об XML и о том, почему ориентация на этот стремительно набирающий популярность формат данных важна при выборе учебных программ, см. раздел Обработка текста).

Рисунок 3.6. OpenOffice.org OpenDraw


Этот пакет доступен для популярных стандартных ( GNU/Linux , Solaris ) и нестандартных ( Microsoft Windows ) операционных систем и прилично (хотя и не идеально) локализован.

Самым же существенным недостатком OpenDraw являются относительно высокие требования к аппаратным ресурсам, поэтому его использование затруднительно на старых или маломощных компьютерах (для комфортной работы над несложными учебными упражнениями должно быть достаточно Intel P-II, Celeron или K6-2 с частотой от 500 МГц или G3 с частотой от 350 МГц при памяти от 64 MБ). Если нужна демонстрация векторно-графических возможностей на таких компьютерах, мы рекомендуем Sodipodi или еще более « легкую » XFig .

Сохранение в « чужих » векторных форматах (экспорт) на сегодня реализовано только для ранних версий предшественника OpenOffice.org пакета StarOffice (и StarDraw как отдельной программы). Зато импорт (чтение « чужих » форматов) возможен не только из универсальных векторных форматов, но и из DXF, используемого в популярных системах автоматизированного проектирования (САПР).

OpenDraw также позволяет экспортировать рисунок во многие растровые форматы или в гипертекстовую страницу.

Следует понимать, что StarDraw , на основе которого разработана программа, задумывалась как « офисный » графический редактор, прежде всего предназначенный для создания и редактирования графических элементов оформления документооборота (сопровождающих документы рисунков, карт, диаграмм, графиков и пр.). Поэтому действия, типичные для такой работы, максимально облегчены и « вынесены на первый план », и OpenDraw содержит массу готовых деталей, широко употребимых в « офисной » графике (например, готовых стрелок и множества соединительных линий, часто используемых в таких случаях). Для технического черчения и схемотехники OpenDraw не приспособлена (хотя при случае в ней можно создать простой чертеж или электронную схему).

Документ OpenDraw называется « рисунком », что несколько дезориентирует, поскольку на самом деле он может содержать целую « пачку » отдельных изображений, называемых слайдами. Каждый слайд, в свою очередь, может содержать один или более слоев.

Рисунок сохраняется в файле, который технически представляет собой PKZip-архив, включающий стилевые определения и собственно содержание документа на языке XML . Какой-либо инструментарий, специально предназначенный для обработки OpenDraw XML , нам не известен.

Как и остальные компоненты OpenOffice.org , OpenDraw в высшей степени конфигурируемая и настраиваемая под конкретное применение программа. Для использования в учебном контексте может оказаться полезным предварительно настроить ее для некоторого сокращения обилия непосредственно доступных пользователю функций, чтобы ученик в них не затерялся.

Основные возможности OpenDraw

Функциональность OpenDraw сопоставима с большинством других редакторов векторной графики и включает:

cоздание, форматирование и преобразование объектов-графических примитивов: отрезков и стрелок; квадратов и прямоугольников; окружностей, эллипсов, дуг, сегментов и секторов; кривых Безье, « свободных » кривых, ломаных и многоугольников;

cоздание, форматирование и редактирование объектов-текстовых надписей (при вводе или редактировании текстов доступна большая часть функциональности word-процессора OpenWord). На самом деле, текст может содержаться в любом замкнутом контуре. В состав OpenDraw также входит декоративная функция FontWork, позволяющая расположить текст « фигурно » (вдоль дуги или окружности);

импорт растрово-графических объектов (в том числе, и в качестве текстур заливки векторно-графических примитивов).

Преобразование объектов включает:

изменение характеристик линий контура (они могут быть разного цвета, сплошными, пунктирными, двойными и т. п.) и заливки (заполнения; оно возможно отдельным цветом, цветовым градиентом (переходом) и даже растровым изображением) замкнутого контура;

перемещение, изменение размеров и поворот;

группирование (превращение нескольких в один) и разгруппирование объектов; комбинирование и раскомбинирование объектов (разница между группированием и комбинированием слишком тонка для нашего обзора);

вращение и зеркальное отображение;

преобразование примитивов — линий и контуров — в произвольные кривые или ломаные;

выравнивание и равномерное распределение (по вертикали или горизонтали, относительно края или центра);

специальные операции, некоторые из которых описаны ниже.

Большинство описанных операций преобразования доступны как посредством меню (к пунктам которого могут быть привязаны « горячие » клавиши), так и на пиктографических палитрах инструментов, наряду с палитрой цвета присутствующих (по желанию) в главном окне программы.

Точное позиционирование объектов облегчает возможность отобразить сетку разметки слайда, а также команды выравнивания объектов относительно узлов этой сетки, края или центра листа (слайда), а также относительно друг друга. Особенно полезно это при создании достаточно формализованных объектов.

Механизм стилей

Важной особенностью OpenDraw является использование механизма стилей для форматирования графических элементов. Использование стилей в векторной графике вполне сопоставимо с использованием того же механизма при оформлении размеченного текста (см. раздел 4.1) и имеет те же преимущества перед « жестким » форматированием/оформлением.

Этот прием позволяет серьезно облегчить вариантное оформление рисунков, отказавшись от « жесткого » (такого, при котором для каждого объекта или группы объектов характеристики задаются вручную) форматирования объектов.

Например, при подготовке схемы оргструктуры учреждения можно создать стиль, которым оформляются изображения подразделений, допустим, с голубой заливкой в черном контуре в 3 пункта толщиной. Если позднее потребуется изобразить те же подразделения желтыми прямоугольниками без рамки, не нужно будет помечать их вручную (представьте, насколько это может быть трудоемко даже для относительно простой организации типа средней школы), достаточно будет лишь изменить параметры стиля. Более того, можно определить стиль и для стрелок, показывающих связи между подразделениями, с « наследованием » цвета от цвета стиля подразделений, если предполагается, что их цвет должен совпадать.

Стиль можно определить и для слайда в целом, что позволяет единообразно оформлять серию рисунков. Набор стилей можно объединить в шаблон (сохраняемый в отдельном файле), если предполагается регулярное его использование.

« Логические операции » над объектами, « 3D » и морфинг

Интересной функцией OpenDraw является наличие так называемых логических операций над объектами. Два или более заполненных контура могут быть скомбинированы особым образом, что порождает новый объект, являющийся объединением форм, их пересечением или « вычитанием » одной формы из другой.

Еще одной интересной особенностью программы является встроенная в нее базовая функциональность имитации трехмерной графики (3D-функции). Она ограничена 1) конструированием тел вращения, 2) преобразованием в тела вращения произвольных двумерных фигур, а также 3) экструзией (приданием последним « глубины »). Трудно понять необходимость рутинного конструирования тел вращения в « офисной » графике, однако для школы возможность такой демонстрации возможностей компьютерной графики может быть весьма полезна.

Двумерный морфинг (плавное перетекание фигур) реализован в OpenDraw не лучшим с точки зрения эстетического результата образом, однако интересным дидактически: на самом деле, программа просто группирует заданное (в качестве « количества шагов » морфинга) количество « промежуточных » (по форме и цвету) фигур между морфируемыми фигурами. Созданную таким образом группу можно разгруппировать и посмотреть, что и как, собственно, программа сделала.

Векторизация растровых изображений

Выше уже было замечено, что, хотя преобразование векторного изображения в растр — элементарная техническая задача, гарантированное обратное преобразование в общем случае невозможно. Тем не менее, существуют программы, которые пытаются это сделать.

OpenDraw обладает функцией векторизации, « спрятанной » в меню « Преобразовать » под кличкой « В многоугольник ». Если применить данный пункт меню к импортированному растровому изображению, появится окно предпросмотра с возможностью задать некоторые параметры и увидеть результат.

Ничего мистического в этой функции нет: программа ищет связные области, залитые одним или близкими цветами, и описывает их контур как многоугольник. Затем она группирует полученные фигуры одного цвета и переходит к следующему цвету или группе цветов. Результирующий векторный объект представляет собой группу, в свою очередь состоящую из цветовых групп.

Более глубокого анализа программа не проводит (в принципе, можно было бы каждый выделенный объект пытаться аппроксимировать с заданной точностью отрезком, коническим сечением или кривой Безье; это позволило бы распознать элементарные геометрические фигуры, например, просканировав простой рисунок).

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

Редактор растровой графики gimp

Источники и параметры растровой графики

Обычным источником растровых изображений является сканер — устройство, « проходящее » (сканирующее) лист бумаги или кадр фотопленки точка за точкой и передающее компьютеру значения, соответствующее интенсивности базовых цветов в каждой точке. Все большей популярностью пользуются цифровые фотокамеры — аппараты, вместо фотопленки фокусирующие изображение на светочувствительной матрице, передающей цифровую запись изображения на энергонезависимый носитель информации (гибкий диск или т. н. флэш-карту), который затем может читаться компьютером.

Растровые изображения могут также создаваться человеком на компьютере с помощью устройств координатного ввода (« мыши » или более подходящего для этой цели графического планшета) или синтезироваться различными программами.

Важнейшими параметрами растрового изображения являются его растровый размер (в точках) и « глубина цвета » (количество бит, используемых для представления цвета каждой точки). Эти параметры часто записывают в виде 1024х728×24, что означает 1024 точки по горизонтали, 728 точек по вертикали и 24 бит на цвет (двадцати четырех бит достаточно для получения « фотореалистичных » изображений, дальнейшее повышение разрядности не приводит к увеличению качества отображаемых или печатаемых современными средствами изображений, хотя в промежуточной обработке или при синтезе изображений иногда используется большие значения глубины цвета). Еще одним параметром, предусмотренным некоторыми форматами хранения растровой графики, является его « масштаб », который принято измерять в точках на дюйм ( DPI ); это чисто информационный параметр, который может учитываться при печати изображений, но не влияет на возможность их обработки.

Источники и параметры и форматы представления растровой графики

За тридцатилетнюю историю компьютерной графики разработано великое множество (сотни) форматов хранения изображений. Большинство из них является плодом несогласованности « технического творчества » отдельных групп исследователей и компаний, а также отражает особенности давно вышедших из употребления специфических устройств. Важными свойствами форматов являются присущие им внутренние ограничения, из которых наиболее значимы ограничения на глубину цвета, поддерживаемые цветовые модели (« мониторная » RGB , « полиграфическая » CMYK и т. д.) возможность сохранения нескольких слоев изображения (понятия слоев, контуров и масок здесь не обсуждаются), наличие т. н. « альфа-канала » (фиктивного « цвета », соответствующего степени прозрачности изображения при наложении его на другое изображение) и поддерживаемые алгоритмы сжатия.

Применяемые в растровой графике алгоритмы сжатия подразделяются на неразрушающие и форматы с потерей качества (последние используют психофизиологическую модель человеческого зрения для того, чтобы избавиться от незначимых деталей изображения, что несколько снижает его качество, но позволяет добиться гораздо большей компактности кода).

Практически универсальными являются форматы TIFF (обычно применяемый в полиграфии, допускает лишь неразрушающее сжатие), PNG (наиболее удобный для представления графических данных в мультимедийных системах и WWW , допускающий неразрушающее сжатие), а также медленно вытесняемые последним JPEG (допускающий сжатие с потерями) и GIF (ограниченный 8 бит (256) цветами). Кроме того, многие графические редакторы (включая описанный ниже gimp ) обладают собственным форматом, позволяющим сохранять в том же файле массу вспомогательной информации, полезной при продолжающейся более одного сеанса работе с файлами.

Общие сведения о gimp

GNU Image Manipulation Program (Программа ГНУ для манипуляции изображениями), или сокращенно gimp — потомок курсового проекта двух студентов, Питера Маттаса и Спенсера Кимболла (1995–96 гг.).

За восемь лет и при участии десятков программистов gimp вырос в один из самых насыщенных функциональностью графических редакторов, уступающих лишь « под завязку » набитому сторонними модулями редактору Photoshop [22] . Текущая стабильная версия — 1.2 (как и в некоторых других проектах нечетным « малым » номерам соответствуют экспериментальные (разработческие) версии, а четным — стабильные).

Интересно, что в рамках проекта gimp была создана библиотека работы с экранными примитивами GTK (ныне GTK+), являющаяся на сегодня одной из самых развитых и широко используемых в своем классе (в частности, на GTK+ основана популярная графическая операционная среда GNOME ).

gimp , доступный для всех популярных настольных платформ (включая стандартные, а также Microsoft Windows , Mac OS и др.), широко используется для работы над WWW и мультимедийной графикой, обработки любительского, репортажного и даже художественного фото, ретуширования кинокадров. Правда, для последней цели чаще используется модификация, известная как FilmGIMP , ее, в частности, активно эксплуатировали при монтаже первого фильма о Гарри Поттере.

gimp редко используется для предпечатной подготовки графики: в нем пока нет поддержки « полиграфических » цветовых моделей и системы цветоделения. Еще одним ограничением текущих версий gimp является относительно низкая производительность, затрудняющая работу с действительно большими (сотни тысяч точек) и сложными (десятки слоев) изображениями. Для создания и обработки достаточно компактных и простых изображений, а также для их отображения на мониторе и печати на оборудовании потребительского класса эти ограничения не важны.

gimp способен работать с продвинутыми координатными устройствами — графическими планшетами, в том числе, моделями, распознающими силу нажатия на перо.

gimp — программируемый графический редактор

Вероятно, успехом gimp не в малой степени обязан своей изначально модульной и программируемой архитектуре. Сам по себе этот редактор — достаточно компактная и простая программа, однако его возможности приумножаются за счет открытости архитектуры и наличия множества модулей (в текущей поставке — около трехсот), реализующих те или иные дополнительные функции, такие как импорт-экспорт сторонних форматов или обработку изображения или его фрагмента по тому или иному алгоритму.

Такие модули можно разрабатывать как отдельные программы с использованием библиотеки GDK , а можно пользоваться одним из встроенных в gimp интерпретаторов языков программирования. Именно наличие таких интерпретаторов и делает gimp программируемым графическим редактором. Можно сказать, что его архитектура подобна архитектуре текстового редактора Emacs .

Таких интерпретаторов на сегодня два. Забавное название Script-fu, видимо, следует понимать как английско-китайское выражение, означающее « мастерство сценирования » (напомним, что « сценариями » (« скриптами ») называют программы, написанные на интерпретируемых языках). Script-fu — это первый встроенный в gimp интерпретатор функционального языка Схема (Schema), являющегося потомком первого языка функционального программирования Лисп. Разработчик скрипта имеет доступ к многочисленным базовым функциям-графическим примитивам.

Схема — весьма продуманный и стройный язык, однако его методический потенциал не может в полной мере быть раскрыт в сегодняшних курсах информатики в средней школе, программирование в которых вводится в директивной (сентенциональной) парадигме. На Схеме, так же, как и на Лиспе, можно писать в директивном стиле, однако изящества и простоты, столь необходимых в обучении, достичь при этом возможным не представляется.

Директивен другой язык, интерпретатор которого также встроен в gimp . Это Перл (Perl), его gimp -овская реализация называется Perl-fu. Хороший программист может писать на Перле чисто и аккуратно, однако синтаксис языка сам по себе настолько гибок (чтобы не сказать « жидок »), что, по нашему мнению, Перл совершенно не годится на роль изучаемых в числе первых (хотя существуют и другие мнения, весьма авторитетные).

Добавление в gimp еще одного интерпретатора (например, алголо- или паскалеподобного языка) не представляется особо сложной задачей, однако о таких проектах ничего не известно, и, наверное, от программирования обработки изображений « внутри » gimp как от простой в методическом освоении темы большинству педагогов стоит пока отказаться.

Интерактивная функциональность и эргономика

Тем не менее, базовой интерактивной функциональности gimp (включая доступные модули) вполне достаточно, чтобы покрыть обычно изучаемые в школе вопросы обработки графики.

При запуске gimp на экране открывается ряд окон. Главное окно содержит меню основных функций, панель пиктографически обозначенных « инструментов » и области, в которых отображаются текущие значения основного и фонового цветов, формы кисти, текущего градиента. Окна изображения соответствуют отдельным открытым графическим файлам (или слоям в них).

Дополнительные инструментальные окна (по какой-то причине названные « диалогами ») могут открываться из меню главного окна. Однако их всего десяток (« Слои, каналы и контуры », « Параметры инструментов », « Кисти », « Шаблоны », « Градиенты », « Палитра », « Устройства ввода », « Индекс документов », « Консоль ошибок »), а основной массив функций, применяемых к текущему или вновь создаваемому изображению или выбранному участку изображения (включая функции, реализованные внешними модулями-фильтрами) « достаются » через контекстное меню, открывающееся по щелчку правой кнопкой мыши в окне изображения.

Зато можно воспользоваться (непривычным для пользователей упрощенных графических сред, таких, как Microsoft Windows ) свойством графической библиотеки GTK+, называемым « линия отрыва ». Каждое меню наверху содержит пунктирную линию, щелкнув мышью на которой можно превратить это меню в самостоятельное инструментальное окно, сохраняющееся, пока пользователь явным образом его не закроет. Таким образом (учитывая настраиваемость самой системы меню) можно в любой момент создать на экране дополнительные « панели инструментов », содержащие функции, которыми в ближайшее время предполагается воспользоваться. Привыкшему к другому стилю работы пользователю это непривычно, однако, привыкнув, эту интерфейсную особенность можно использовать весьма эффективно.

Множественность окон, к сожалению, может создавать некоторые неудобства в средах без развитого инструментария управления окнами. В более развитых средах можно « склеить » несколько окон, чтобы они перемещались как единое целое или « поднять » окно, чтобы оно продолжало оставаться видимым, даже если будет активизировано окно, расположенное « под ним » (собственно, многооконное визуальное решение и создано в расчете на наличие таких средств), а если такие средства отсутствуют (как, например, в Microsoft Windows ), пользование редактором на мониторе с малым разрешением может быть отягощено необходимостью совершать какие-то дополнительные действия.

Основная интерактивная функциональность, доступная посредством « инструментов » в главном окне, достаточно традиционна для программ этого класса. Она включает, в том числе:

выделение области изображения (прямоугольной, эллиптической или произвольной формы, а также ограниченной кривыми Безье). Последовательно выделяемые области могут образовывать пересечения, объединения или вычитания;

выделение связной области (« волшебная палочка ») с заданием параметров связности;

перемещение, копирование, заливку выделенных областей;

кадрирование (обрезку) изображения;

изменение масштаба отображения на экране;

вращение, масштабирование, искривление и зеркальное отображение изображения;

выбор текущего цвета (« пипетка »);

заливку области сплошным цветом или градиентом;

рисование « карандашом » или « кистью » произвольной формы и очистку « ластиком ».

В базовую функциональность gimp входит также возможность захвата изображения со сканера и с экрана.

Фильтрация и синтез изображений

Основной прием автоматизированной обработки изображений — фильтрация их целиком, либо выделенных в них областей. Большая часть упомянутых внешних модулей реализует именно функцию фильтрации. Среди наиболее важных в практической обработке изображений фильтров отметим:

изменение цвета, насыщенности, яркости и контраста изображения;

повышение резкости и размывание, выделение краев.

Значительное количество фильтров имитирует различные « эффекты »: от просмотра изображения через волнистое стекло до натяжения его на сферу, цилиндр или тор.

Синтез изображений в базовой поставке gimp и известных нам фильтрах не слишком развит, однако есть ряд фильтров, создающих фрактальные изображения (в том числе, натуроморфные).

[21] Мы не касаемся здесь специального вопроса о сложных форматах кодирования, включающих векторные элементы и фрагменты растра, так же, как и — растрового и векторного — кодирования движущихся изображений и вопросов сжатия растровых изображений.

[22] Стоит отметить, что стоимость одной копии последнего, самого по себе не дешевого, вместе со всеми такими модулями составляет несколько тысяч долларов.

Илон Маск рекомендует:  parse_str - Разбирает строку в переменные
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL