C# форум

Формула программиста

основатель — Волосатов Евгений Витольдович
Open shop C++ Графика. Обработка изображений

C++ Графика. Обработка изображений

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

Обработка изображений на C++

Список уроков | фото | видео

# Название видеоурока Видео / Тесты Решило Рейтинг Доступ
1 FREE Презентация курса 00:03:00
34 чел. ★ 4.6 Done
  Приглашаю всех на курс по созданию программы работы с графикой на Visual C++ (Win32 Project).
На этом курсе мы научимся создавать простые программы в этой среде, выводить в основное окно элементы управления и содержимое BMP-файлов, а также редактировать и сохранять полученные изображения.

Отчёт отправил: 13417. Chip Выполнено за не указано [Показать отчёт]
Комментарии: Тема курса интересна, есть желание научиться работать с bmp-файлами. Другие темы также будут интересны. Однако, по своей традиции на проекте videosharp.indo, я хочу выполнить этот курс в ОС Linux, на языке С или С++ используя библиотеку GTK. Дмитрий Игоревич, одобрите мой подход?:) 
2 FREE Структура "нулевого" проекта 00:09:58
14 чел. ★ 4.5 Done
  На этом уроке мы разберём структуру исходного файла "нулевого" проекта на Visual C++ Win32 Project
Отчёт отправил: 13417. Chip Выполнено за не указано [Показать отчёт]
Комментарии: Посмотрел через видео на код нулевого проекта, более-менее понятно, хотя это код на языке С, здесь нет классов, шаблонов и прочих премудростей С++. Идем дальше:) 
3 Настройка среды 00:07:55
1 тест
10 чел. ★ 4.8 Done
  На этом уроке мы создадим простой проект типа Win32 Project и выделим функцию WndProc() в отдельный модуль.
Отчёт отправил: 13417. Chip Выполнено за 1 час. 50 мин. [Показать отчёт]
Научился: Научился создавать программу на C++ с помощью интерфейса gtkmm. 
Сложности: Проблем не было. 
Комментарии: Создал свой вариант нулевого проекта, добавил три кнопки и область для вывода изображения. 
4 Добавление класса BmpCtrl 00:10:05
10 чел. ★ 4.8 Done
  На этом уроке мы создадим класс BmpCtrl, который будет отвечать за представление основного окна, и зададим его начальные свойства.
Отчёт отправил: 13417. Chip Выполнено за 25 мин. [Показать отчёт]
Научился: Познакомился с событием WM_CREATE, WINAPI-функцией GetCurrentDirectory. 
Сложности: Проблем не было. 
Комментарии: Удобно, когда Visual Studio позволяет ускорить процесс создания программы. На видео показано, как создавать класс, добавлять в него функции, описывать аргументы. 
5 Программирование события WM_PAINT 00:11:47
10 чел. ★ 4.9 Done
  На этом уроке мы научимся вычислять размеры клиентской области окна и осуществлять вывод текста в основное окно программы
Отчёт отправил: 13417. Chip Выполнено за 1 час. 40 мин. [Показать отчёт]
Научился: Познакомился с событием WM_PAINT, функцией для вывода текста TextOut, GetClientRect и MoveWindow. 
Сложности: Установить требуемый размер области изображения. 
Комментарии: Интересный способ подгонки размера клиентской области экрана. 
6 Создание кнопок 00:12:14
10 чел. ★ 4.6 Done
  На этом уроке мы научимся создавать кнопки с картинками в основном окне программы
Отчёт отправил: 13417. Chip Выполнено за 40 мин. [Показать отчёт]
Научился: Узнал как создавать кнопки с помощью функции CreateWindow и загружать в них изображение с использованием пары функций LoadImage, SendMessage. 
Сложности: Проблем не было. 
Комментарии: Если я правильно понял, то файлы open.bmp, crop.bmp, save.bmp находятся в системных каталогах Windows и нет необходимости указывать прямой путь к файлам. 
7 Программирование события BN_CLICKED 00:13:07
9 чел. ★ 5 Done
  На этом уроке мы научимся реагировать на нажатие созданных кнопок
Отчёт отправил: 13417. Chip Выполнено за 30 мин. [Показать отчёт]
Научился: Узнал как обрабатывать событие нажатия на кнопку после получения сообщения WM_COMMAND в WndProc. 
Сложности: Проблем не было. 
Комментарии: Понравилась идея с тремя переменными, добавил isOpen = false в конец функции OnSave, для повторения цикла Open-Crop-Save. 
8 Подготовка к выводу картинки на экран 00:10:56
9 чел. ★ 5 Done
  На этом уроке мы подготовимся к выводу картинки на экран - создадим прямоугольник для вывода и прорисуем его рамки
Отчёт отправил: 13417. Chip Выполнено за 1 час. 10 мин. [Показать отчёт]
Научился: Узнал как нарисовать прямоугольник, настроить параметры карандаша для рисования рамки, выбрать готовые экземпляры кистей для заливки. 
Сложности: Проблем не было. 
Комментарии: Как пожелание, можно прикрепить к видеоуроку тестовый файл редактируемого изображения. Нашел в интернете похожий файл изображения компакт-диска, думаю подойдет. 
9 Вывод картинки на экран 00:14:50
8 чел. ★ 4.9 Done
  На этом уроке мы выведем содержимое BMP-файла на экран
Отчёт отправил: 13417. Chip Выполнено за 3 час. 10 мин. [Показать отчёт]
Научился: Загружать и масштабировать изображение из файла. 
Сложности: Реализовать перерисовку и масштабирование изображения. 
Комментарии: Добавил возможность масштабирования изображения при изменении размера окна приложения. 
10 Вывод информации в основное окно 00:08:05
8 чел. ★ 5 Done
  На этом уроке мы выведем информацию о размерах прямоугольников в основное окно, а также получим доступ к матрице цветных точек
Отчёт отправил: 13417. Chip Выполнено за 2 час. 40 мин. [Показать отчёт]
Научился: Научился получать доступ к матрице цветных точек изображения. 
Сложности: Получить доступ к матрице цветных точек изображения. 
Комментарии: Для проверки того, что я действительно получил доступ к матрице точек изображения, решил сделать трюк: в начале создаю временный объект изображения, копирую его матрицу точек в массив, а уже на базе этого массива сырых данных создаю новый объект изображения, затем использую новый объект для масштабирования и вывода на экран. 
11 Матрица цветных точек 00:17:27
8 чел. ★ 4.9 Done
  На этом уроке мы определим границы выходного изображения
Отчёт отправил: 13417. Chip Выполнено за 1 час. 40 мин. [Показать отчёт]
Научился: Научился определять границы изображения по матрице точек. 
Сложности: Проблем не было. 
Комментарии: Границы определили, теперь осталось нарисовать рамку и сохранить новое изображение:) 
12 Вывод обрезанного изображения 00:12:08
8 чел. ★ 4.5 Done
  На этом уроке мы выделим границы выходного изображения в основном окне, а также ещё раз посмотрим, как можно выводить изображение в основное окно с масштабированием

Отчёт отправил: 13417. Chip Выполнено за 2 час. 40 мин. [Показать отчёт]
Научился: Повторил как масштабировать изображение. 
Сложности: Проблем не было. 
Комментарии: Добавил возможность выбора файла изображения и перерисовку рамки обрезки при изменении размера окна приложения. По предложению Ивана Воронина, заменил три логические переменные на один enum, но для удобной реализации цикла load->scale->crop (например, нет смысла выполнить crop, если не был выполнен load) потребовалось освежить в памяти некоторые знания по enum class, перегрузке операторов для enum, friend-functions, в общем, спасибо Иван:) 
13 Сохранение файла 00:24:05
8 чел. ★ 5 Done
  На этом уроке мы научимся сохранять изображение и его части в формате BMP.
Мы научимся работать с файлами и ещё раз потренируемся копировать изображения из одного контекста в другой, но уже без масштабирования
Отчёт отправил: 13417. Chip Выполнено за 2 час. 50 мин. [Показать отчёт]
Научился: Научился сохранять матрицу точек в файл изображения. 
Сложности: Проблем не было. 
Комментарии: Добавил текстовые комментарии к цифрам в верхней области окна. Заменил цвет рамки рабочей области на черный, добавил серую рамку, которая ограничивает масштабированное изображение, чтобы лучше видеть пропорции исходного изображения. Сделал рамку обрезки пунктирной. Реализовал выбор имени сохраняемого файла. В целом, курс понравился. Так как автор изначально ориентируется на знание основ Win32 приложения, то я считаю, что первую половину курса можно смело сократить до двух-трех уроков. Уроки в первой половине короткие, слабо связаны с тематикой курса, а во второй длиннее, хотя, может это такая фича. Еще как пожелание, по примеру видеоуроков Евгения Витольдовича, хотелось бы видеть использование схем, рисунков в Paint, думаю будет нагляднее понимать материал. Спасибо за курс! :) 
  Итого:   13 видеоуроков 2 час. 35 мин.
1 тест
8 чел. ★ 4.81  
  Финалисты:   Максим Базуев,   Chip,   Yefim,   Иван Воронин,   Новопашин Владимир,   Алексей В.,   G_F,   Tom .

Начинаем практику по языку C#





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

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.


Научился: Научился создавать новое изображение по границе обрезки исходного изображения. Научился сохранять изображение. Добавил возможность загрузки файла с компьютера пользователя. Результаты можно посмотреть по адресу http://tomfoxweb.rf.gd/crop/13/index.html



Научился: работе с диалоговыми окнами, сохранению картинки в формате BMP
Добавил возможность выбора любого BMP файла, где бы он не лежал. Добавил возможность сохранения BMP файла в любом месте и любым именем. Расширение bmp автоматически добавляется, если забыли его дописать вручную. Использовал ранее созданную переменную sPath для установки корневой директории перед сохранением файла, если не было выбрано кастомное расположение, то используется по-умолчанию относительное. Замечательный курс, очень понравился, простой и в том же время информативный, жду ещё курсы по C++, думаю стоит начать с самого нуля и постепенно добавлять курс в порядке усложнения, чтобы больше было желающих и меньше жалующихся. з.ы. на выполнения урока ушло 45 минут. на доработку выбора файла для загрузки и сохранения файла куда угодно ушло 39 минут. остальное время почти 3,5 часа ушло на подготовку, запись и монтаж видео-отчёта.