C# форум

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

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

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

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

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

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

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

Отчёт отправил: 10558. Иван Воронин Выполнено за не указано [Показать отчёт]
Комментарии: Этот курс интересен тем, что он на языке C++! Чем больше разнообразных курсов и языков, тем интереснее. 
2 FREE Структура "нулевого" проекта 00:09:58
11 чел. ★ 4.7 Done
  На этом уроке мы разберём структуру исходного файла "нулевого" проекта на Visual C++ Win32 Project
Отчёт отправил: 10558. Иван Воронин Выполнено за не указано [Показать отчёт]
Комментарии: Отличный вводный урок. з.ы. на ютубе прикол, если смотреть на скорости х1 то всё ок, звук супер, но если скорость поставить х2.25, на которой я обычно смотрю всё на ютубе, то переодически треск, ютуб как всегда отличается своей сообразительностью. 
3 Настройка среды 00:07:55
1 тест
8 чел. ★ 4.8 Done
  На этом уроке мы создадим простой проект типа Win32 Project и выделим функцию WndProc() в отдельный модуль.
Отчёт отправил: 10558. Иван Воронин Выполнено за 11 мин. [Показать отчёт]
Научился: Повторил пройденное 
Сложности: найти время 
Комментарии: Отличный урок, ничего лишнего, по поводу string.h это хорошая идея, помогает работать со строками как в C#, а не как обычно в C++ в виде массива символов. В этом уроке ничего сложного не увидел, просто повторить за учителем и всё, если что-то не ясно, то всё, с чем будем работать думаю объяснят в процессе. Остальное, что не будет затронуто, но видно в коде, это специфическая структуру проекта на языке C++ и объяснение каждого символа в проекте это думаю уже тема другого курса. Лично мне всё ясно, с C++ имел опыт работы, поэтому вопросов не возникает, тут в одном отчёте читал, что не ясно, что такое extern, так по мне это аналог global в php, если это не ясно, ждите курса для самых маленьких, раз гуглить религия не позволяет. 
4 Добавление класса BmpCtrl 00:10:05
8 чел. ★ 4.8 Done
  На этом уроке мы создадим класс BmpCtrl, который будет отвечать за представление основного окна, и зададим его начальные свойства.
Отчёт отправил: 10558. Иван Воронин Выполнено за 14 мин. [Показать отчёт]
Научился: Созданию классов/функций через специальное окно-конструктор =) 
Сложности: найти время 
Комментарии: Отличный урок, не знал, что классы и функции можно создавать через специальные окна-конструкторы, обычно писал вручную, это для новичков самое оно, так как код сам генерируется, останется лишь в теле дописать нужный функционал. Ничего сложного в уроке не увидел, всё чётко и ясно показано и объяснено, единственное, использовали массив символов для хранения текущей директории это пока? далее переведём это в тип string? или мы тип string для других задач будем использовать? 
5 Программирование события WM_PAINT 00:11:47
8 чел. ★ 4.9 Done
  На этом уроке мы научимся вычислять размеры клиентской области окна и осуществлять вывод текста в основное окно программы
Отчёт отправил: 10558. Иван Воронин Выполнено за 21 мин. [Показать отчёт]
Научился: TextOut(), MoveWindow(), GetClientRect(). 
Сложности: найти время 
Комментарии: Отличный урок, теперь ясно почему 1000 + (1000 - MainRect.right)...  У меня это били лишние 8 по ширине и 46 по высоте. Но так намного лучше, можно подставлять нужные значения и оно само подгонит в любой ОС, вне зависимости от стиля отображения окон. В моём случае были лишние 8 пикселей по ширине и 46 по высоте. 
6 Создание кнопок 00:12:14
7 чел. ★ 4.9 Done
  На этом уроке мы научимся создавать кнопки с картинками в основном окне программы
Отчёт отправил: 10558. Иван Воронин Выполнено за 38 мин. [Показать отчёт]
Научился: Созданию кнопок на форме и очистке ресурсов при завершении работы приложения. 
Сложности: найти время 
Комментарии: Создал три картинки для кнопок. Создал иконку для приложения (см. скриншот) Использовал забытую переменную nButtons в циклах. Отличный урок, всё коротко и ясно. 
7 Программирование события BN_CLICKED 00:13:07
7 чел. ★ 5 Done
  На этом уроке мы научимся реагировать на нажатие созданных кнопок
Отчёт отправил: 10558. Иван Воронин Выполнено за 47 мин. [Показать отчёт]
Научился: Реакции на нажатие кнопок 
Сложности: найти время 
Комментарии: Использовал enum вместо трёх булевых переменных, просто напрашивалось, в итоге как видно из скриншота, всё до безобразия просто. Открывать файл можно в любое время, мало-ли, что в голову взбредёт человеку, может не тот файл выбрал, что же теперь идти до конца, делая лишние телодвижения. Далее, пока не открыт файл, ничего обрезать нельзя. Соответственно, пока не обрезано ничего, сохранять тоже смысла нет. Если же сохранили обрезанный файл, то ничего не работает, кроме кнопки Открыть. Отличный урок, всё коротко и ясно. 
8 Подготовка к выводу картинки на экран 00:10:56
7 чел. ★ 5 Done
  На этом уроке мы подготовимся к выводу картинки на экран - создадим прямоугольник для вывода и прорисуем его рамки
Отчёт отправил: 10558. Иван Воронин Выполнено за 24 мин. [Показать отчёт]
Научился: Созданию ручки для рисования, рисованию квадрата. 
Сложности: найти время 
Комментарии: Нашёл картинку компакт диска, добавил ей лишний белый фон в размере 1000х600. Сделал не сплошную линию у ручки, а пунктирную. Выглядит веселее. Отличный урок, всё коротко и ясно. 
9 Вывод картинки на экран 00:14:50
6 чел. ★ 5 Done
  На этом уроке мы выведем содержимое BMP-файла на экран
Отчёт отправил: 10558. Иван Воронин Выполнено за 23 мин. [Показать отчёт]
Научился: Загрузке bmp и отображении его на форме. 
Сложности: найти время 
Комментарии: Когда написали условие выборки для общего коэффициента, не смог, чтобы не воспользоваться тернарным оператором, он тут как раз в тему, см. скриншот. Отличный урок, коротко и ясно. 
10 Вывод информации в основное окно 00:08:05
6 чел. ★ 5 Done
  На этом уроке мы выведем информацию о размерах прямоугольников в основное окно, а также получим доступ к матрице цветных точек
Отчёт отправил: 10558. Иван Воронин Выполнено за 17 мин. [Показать отчёт]
Научился: Получению массива цветных точек изображения. 
Сложности: найти время 
Комментарии: Судя по времени урока и тому, что в нём было реализовано, я думаю можно объединить этот урок со следующим, а то из-за создания матрицы цветных точек урок кажется не завершённым. Ведь хочется увидеть применение данной матрицы в деле. Возможно мне просто это показалось, но прошлые уроки выглядят завершёнными, а этот нет. В любом случае, урок отличный как всегда, коротко и ясно. Идём дальше. 
11 Матрица цветных точек 00:17:27
6 чел. ★ 5 Done
  На этом уроке мы определим границы выходного изображения
Отчёт отправил: 10558. Иван Воронин Выполнено за 24 мин. [Показать отчёт]
Научился: Поиску ярких пикселей. 
Сложности: найти время 
Комментарии: Так как уже работал с пикселями в Java, то единственное для меня новое было, это поиск ярких пикселей, так же превращение изображения в оттенки серого. Отличный урок, всё коротко и ясно. з.ы. судя по видео, за кадром были внесены изменения, о которых в процессе урока упомянули (что круглые скобки нужно заменить на квадратные), а по поводу того, что в конце функции OnCrop() нужно тоже добавить строчку обновления формы, это видимо для самых внимательных, я то её дописал автоматом, только потом понял, что о ней ни слова не сказали за всё видео ;) 
12 Вывод обрезанного изображения 00:12:08
6 чел. ★ 4.3 Done
  На этом уроке мы выделим границы выходного изображения в основном окне, а также ещё раз посмотрим, как можно выводить изображение в основное окно с масштабированием

Отчёт отправил: 10558. Иван Воронин Выполнено за 24 мин. [Показать отчёт]
Научился: копированию части картинки 
Сложности: найти время 
Комментарии: Два варианта отображения картинки после кадрирования - с подгонкой в рамку формы и 1х1, см. скриншоты. Отличный урок, всё коротко и ясно. 
13 Сохранение файла 00:24:05
6 чел. ★ 5 Done
  На этом уроке мы научимся сохранять изображение и его части в формате BMP.
Мы научимся работать с файлами и ещё раз потренируемся копировать изображения из одного контекста в другой, но уже без масштабирования
Отчёт отправил: 10558. Иван Воронин Выполнено за 4 час. 51 мин. [Показать отчёт]
Научился: работе с диалоговыми окнами, сохранению картинки в формате BMP 
Сложности: найти время 
Комментарии: Добавил возможность выбора любого BMP файла, где бы он не лежал. Добавил возможность сохранения BMP файла в любом месте и любым именем. Расширение bmp автоматически добавляется, если забыли его дописать вручную. Использовал ранее созданную переменную sPath для установки корневой директории перед сохранением файла, если не было выбрано кастомное расположение, то используется по-умолчанию относительное. Замечательный курс, очень понравился, простой и в том же время информативный, жду ещё курсы по C++, думаю стоит начать с самого нуля и постепенно добавлять курс в порядке усложнения, чтобы больше было желающих и меньше жалующихся. з.ы. на выполнения урока ушло 45 минут. на доработку выбора файла для загрузки и сохранения файла куда угодно ушло 39 минут. остальное время почти 3,5 часа ушло на подготовку, запись и монтаж видео-отчёта. 
Видеообзор: zezuQ3rliBE
  Итого:   13 видеоуроков 2 час. 35 мин.
1 тест
6 чел. ★ 4.87  
  Финалисты:   Максим Базуев,   Chip,   Yefim,   Иван Воронин,   Новопашин Владимир,   Алексей В. .

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





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

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

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

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


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


Научился: Научился сохранять матрицу точек в файл изображения.
Добавил текстовые комментарии к цифрам в верхней области окна. Заменил цвет рамки рабочей области на черный, добавил серую рамку, которая ограничивает масштабированное изображение, чтобы лучше видеть пропорции исходного изображения. Сделал рамку обрезки пунктирной. Реализовал выбор имени сохраняемого файла. В целом, курс понравился. Так как автор изначально ориентируется на знание основ Win32 приложения, то я считаю, что первую половину курса можно смело сократить до двух-трех уроков. Уроки в первой половине короткие, слабо связаны с тематикой курса, а во второй длиннее, хотя, может это такая фича. Еще как пожелание, по примеру видеоуроков Евгения Витольдовича, хотелось бы видеть использование схем, рисунков в Paint, думаю будет нагляднее понимать материал. Спасибо за курс! :)