background top icon
background center wave icon
background filled rhombus icon
background two lines icon
background stroke rhombus icon

Скачать "01. Основы графики Windows. Изучаем GDI. Pen, Brush, Rectangle."

input logo icon
Теги видео
|

Теги видео

графика
виндовс
уроки
туториал
graphics
windows
gdi
tutorial
lesson
урок
Субтитры
|

Субтитры

subtitles menu arrow
  • enАнглийский
Скачать
00:00:00
всем привет друзья я рад приветствовать
00:00:03
вас на канале game когда точка ру
00:00:05
я практически поправился как можно
00:00:07
слышать
00:00:08
по моему уже почти здоровому блузу и
00:00:11
решил записать урок и это будет не
00:00:14
простой урок
00:00:15
а это будет один из не первый урок в
00:00:21
новой небольшой серии по основам графики
00:00:25
для windows в чем будет заключаться в
00:00:29
чем будет заключаться этот небольшой
00:00:31
курс сначала мы освоим основы
00:00:38
гадай это старая версия
00:00:41
графики для windows появившиеся живущего
00:00:45
в 95 времена там в индустрии 11
00:00:49
потом перейдем к да и плюс после этого
00:00:53
мы переберемся картриджей и завершить
00:00:55
весь этот коктейль основам
00:00:58
программирования графики под direct x
00:01:00
для чего это делается это делается для
00:01:02
того чтобы дать начальное понятие о том
00:01:07
как вообще делают игры и как с этой
00:01:10
стороны к ним можно подойти с целью
00:01:15
взлома и получение результата который
00:01:20
нам нужен как вы понимаете после того
00:01:23
как я закончил эту мини серию мы уже
00:01:26
перейдем во взломе на следующий уровень
00:01:31
и начнем разбираться как делать уже
00:01:36
всякие полезные штуки типа успевал х к
00:01:40
тому подобного но для того чтобы начать
00:01:42
делать эти штуки мы должны разбираться
00:01:45
как вообще создается и пишется графика
00:01:50
для игр для винды в частности
00:01:52
графика в играх но и естественно
00:01:55
постольку поскольку мой принцип в том
00:01:58
чтобы всегда идти от простого сложному
00:02:00
мы начнем самого простого с гадай
00:02:05
graphics девайс интерфейс самые основы
00:02:11
что это такое я естественно рассказывать
00:02:14
не буду рекомендую на эту тему посчитает
00:02:17
материал в интернете их очень много они
00:02:20
очень расширен и если я начну
00:02:23
рассказывать
00:02:24
примут самое-самое происхождение
00:02:27
этот мини курс затем некий на мини-курса
00:02:29
на самое что ни на есть palto
00:02:32
полноценный и огромный поэтому
00:02:37
откладывать не будем и сразу же
00:02:39
приступим я создал обычный проектик
00:02:42
visual studio to equip и выпили волосню
00:02:47
ненужная и у меня появился вот такой то
00:02:49
получился такой код который собственно
00:02:51
ничего не делает кроме того как создает
00:02:54
окошко я буду на протяжении урока
00:02:58
покашливать надеюсь у меня за это сильно
00:03:01
ругать не будете естественно
00:03:03
исходник к этому уроку и ко всем
00:03:07
последующим я буду публиковать ссылку на
00:03:10
исходе буду публиковать в описании к
00:03:12
видео и да вы уж ребят не обижайтесь
00:03:15
ссылка будет через просмотр рекламы да
00:03:19
мне тоже хочется кушать мне тоже хочется
00:03:21
немножко заработать
00:03:22
называйте меня желобам с новым там или
00:03:25
вообще не знаю кем хотите но если вы
00:03:28
хотите получить исходник пожалуйста
00:03:32
будьте добры кликайте по ссылке и через
00:03:35
просмотр рекламы вы попадете в
00:03:38
репозиторий в котором будет лежать
00:03:41
исходник
00:03:42
и естественно как бы этот репозитории вы
00:03:44
сможете кинуть в себе в закладочки и
00:03:46
поэтому реклама придется посмотреть
00:03:48
всего один раз из видео к видео ссылка
00:03:52
на этот репозиторий меняться не будет
00:03:53
потому что будет обновляться только сам
00:03:56
репозиторий рекомендую почитать основы
00:04:00
работы с git как любой программе
00:04:04
я очень рекомендую данную систему
00:04:07
контроля версий очень полезно но и
00:04:12
все-таки пойдем значит для рисования на
00:04:20
устройстве в данном случае
00:04:23
экран это является экран является
00:04:26
устройством вывода и для того чтобы
00:04:29
рисовать в этом устройстве вывода нам
00:04:31
нужен его контекст любые ссылки на
00:04:38
контекст и и так далее там подобные в
00:04:42
виде называются хендл поэтому тип
00:04:46
собственно тип данного контекста который
00:04:51
нам нужен называется и здесь и что
00:04:53
значит хэндл ту девайс контекст то есть
00:04:55
это как бы как ручка что ли как ссылка
00:05:01
но то есть по факту внутри она века и
00:05:03
работать как ссылка но опять таки это
00:05:06
очень очень низкий уровень он за рамками
00:05:10
данного курса я не хочу этот курс очень
00:05:14
сильно затягивать и так вот уже пять
00:05:16
минут от начала урока прошло я только
00:05:18
болтаю ну вот значит
00:05:23
объясняю как это работает и такой во
00:05:25
первых что это такое это так называемая
00:05:27
вид новая процедура виндовые процедуры
00:05:31
это процедура которая обрабатывает все
00:05:37
системные сообщения которые приходят как
00:05:40
ну вот например есть сообщение
00:05:43
например воем дестрой в and destroy это
00:05:45
сообщение присылается системой тогда
00:05:47
когда мы на окне нажимаем крестик звучит
00:05:51
глупо да вроде у окна нажали крестик
00:05:54
очисти на сообщение почему-то
00:05:56
присылается системы но так работают
00:05:58
винда на самом деле само окно ничего не
00:06:02
знает о том что мы называем нажали на
00:06:03
его крестик
00:06:04
это знает система то система знает что
00:06:06
мы нажали левую кнопку мыши она это
00:06:10
сообщение обрабатывает понимает какому
00:06:12
окно предназначено это сообщение и это
00:06:14
окно ему отсылают
00:06:15
и собственно сюда но приходит и здесь
00:06:20
она обрабатывается что показать что
00:06:21
действительно так и есть мы ставим брик
00:06:23
поют на винде строй даже можно здесь
00:06:25
внутри
00:06:26
запускаем приложение и об мы нажали на
00:06:31
закрытие окошку уничтожилась и в момент
00:06:35
уничтожения срабатывает в м дестрой и
00:06:39
вот сюда вот мы прилетаем то есть вот мы
00:06:42
здесь остановились и естественно как бы
00:06:43
пост клайд месяц это уже само окно
00:06:46
публикуют в систему сообщения то что а я
00:06:49
все закрылось все нормально то есть что
00:06:51
можно вычистить памятью связано с этим
00:06:53
окнам вот и таких сообщений
00:06:57
великое множество вообще за возьмите за
00:06:59
привычку я уже не раз говорил возьмите
00:07:01
за привычку регулярно читать и мы сдаем
00:07:03
там огромное количество очень полезной и
00:07:08
нужной информации в этом же msdn описаны
00:07:14
все функции winapi
00:07:16
которые мы будем проходить которую мы
00:07:19
будем пользоваться
00:07:22
соответственно после потери надо
00:07:26
читайте msdn читаете и по поводу этого
00:07:28
windows месяц и так далее вот кстати
00:07:32
сама но сообщение которое нам
00:07:34
понадобится the vm paint что это за
00:07:36
сообщение это сообщение приходит
00:07:39
тогда и только тогда когда окно должно
00:07:42
быть перерисовано объясняю то есть в
00:07:45
обычной жизни не в приложении к тренерам
00:07:49
или еще к чему то то есть к игры вали
00:07:52
еще почему-то само окно вот пока она
00:07:56
стоит и пока мы его не трогаем ему это с
00:08:00
не с ним ничего не происходит от
00:08:02
делается для экономии ресурсов для
00:08:03
экономии потоков это долю подобно тому
00:08:05
подобного то есть с окном ничего не
00:08:09
происходит как только мы его передвинули
00:08:13
или перекрыли другим окном или еще
00:08:16
что-нибудь вам сделали в этот момент в
00:08:20
этот момент
00:08:21
окно посылается сообщение ночь я чаще
00:08:25
конечно там
00:08:26
пятки зависит от реализации системе но
00:08:28
насколько я помню в and paint это
00:08:32
сообщение она прилетает ровно в тот
00:08:34
момент когда окно должно быть
00:08:36
перерисовано то есть система говорит
00:08:40
окну типа чувак там над тобой что-то
00:08:42
изменилось там нато бы было другое окно
00:08:45
сейчас уже оно передвинулось ли еще что
00:08:48
то такое поэтому давай-ка перерисую
00:08:51
вот посылается этот сообщения но и здесь
00:08:54
ссылается дат сообщения и собственно в
00:08:57
этом сообщении мы можем рисовать
00:08:59
когда мы генерируем template у через new
00:09:02
project он даже здесь
00:09:04
вставляя что-то вроде / клод гол столь
00:09:08
что такое короче то что типа код для
00:09:10
рисования идет сюда вообще по факту
00:09:13
да по факту мы можем так но есть
00:09:16
некоторые нюансы какие нюансы я
00:09:19
продемонстрирую для вряд ли смогу
00:09:26
но можно попробовать принципе ну и
00:09:29
давайте для начала то есть мы знаем то
00:09:31
что нас экран точнее фон да кстати здесь
00:09:35
вынет из нас я еще сделаю одну такую
00:09:37
штуку здесь после
00:09:41
нет даже не здесь а вот когда наверно
00:09:44
когда вы м.п.
00:09:45
на тот случай если вдруг вы захотите
00:09:48
делать потом окна с изменяемым размером
00:09:50
давайте вот здесь делаем так сначала
00:09:53
здесь мы введём переменную вот это
00:09:56
кстати хингл основной хэндл окна он нам
00:10:02
тоже понадобится он там задается а
00:10:04
давайте введем переменную rect структуру
00:10:08
тоже elect это у нас будет клиент клиент rect в
00:10:16
этой структуре будет лежать будет лежать
00:10:19
размер вот этой вот клиентской области
00:10:23
потому что мы рисовать будем с ней а
00:10:25
каждый раз вычислить размер окна и
00:10:27
отнимать от него размер заголовка но это
00:10:30
такое себе да правда единственно сейчас
00:10:33
у нас получится так что в каждый момент
00:10:36
рисования у нас будет что у нас будет
00:10:42
вычисляться размер клиентской области
00:10:47
колин track вот вызовом этой анапе
00:10:51
функции я настоятельно ребята рекомендую
00:10:56
все функции которые мы здесь разбираем
00:10:59
идти идти и находить в msdn очень
00:11:05
рекомендуют прям пишите в google i get
00:11:07
контракт winapi msdn и по первой ссылке
00:11:11
будет собственно переход вам издание на
00:11:17
внезапно до неочевидного вот и там нужно
00:11:22
внимательно читать описание всех функций
00:11:24
иначе будет непонятно так ладно поехали
00:11:27
дальше то есть
00:11:28
клиентский своей клиентской области
00:11:30
получили теперь мы можем с ней работать
00:11:32
во многих
00:11:34
функция беда ее использовать так ну
00:11:39
давайте для начала покрасим покрасим
00:11:44
покрасим в чёрный фон допустим возьмем
00:11:47
вот и сделан так вот фил rect фил rect и
00:11:51
здесь вот видите для каждой функции
00:11:54
рисования нам нужен контекст устройства
00:11:56
то есть этот handle the девайс контекст
00:11:59
у нас здесь уже есть это мы контекст
00:12:01
нашего окна получили и мы можем
00:12:04
собственно взять и подсунуть его сюда
00:12:07
дальше у нас просит передать ему
00:12:13
структуру rect в которые будут
00:12:16
координаты
00:12:20
который нужно залить ваш фил это
00:12:23
запорный дыра филарета помнить квадрат
00:12:25
прямоугольник и соответственно передаем
00:12:29
ему наш клиент олег который мы только
00:12:30
что вычислили ну и естественно нам для
00:12:34
того чтобы нам чем-то заполнить этот
00:12:38
квадрат прямоугольник прошу прощения
00:12:42
естественно нам нужно создать для него
00:12:44
кисть кисть это очень прикольная крутая
00:12:48
штука естественно мы ее раз ее создании
00:12:51
тоже рассмотрим без этого никуда
00:12:55
кистей может быть немало
00:12:59
особенно с она может быть интересна
00:13:01
кисть под назад кисть с типом potter
00:13:05
брошь с помощью этой кисти мы будем
00:13:08
делать кое-какие манипуляции с
00:13:10
картинками те забегая немного вперед
00:13:12
скорее всего в пену видим этого делать
00:13:14
не будем потому что сначала я объясню
00:13:16
более простые вещи потом уже как будут
00:13:19
постепенно будем усложнять
00:13:20
но пока что мы можем не создавать эту
00:13:24
кисть она можем получить ее из системы
00:13:27
потому что в системе есть несколько
00:13:30
предустановленных
00:13:32
гадая объектов и вот get stuck обжиг он
00:13:35
как раз вытаскивает именно стоковый
00:13:39
объект но то есть которые уже существуют
00:13:41
системе в данном случае давайте но
00:13:43
возьмем и black браш возьмем мы запомним
00:13:50
заполним благ брешь так что то не
00:13:52
нравится а ему не нравится естественно
00:13:54
то что нет столько объект возвращается
00:13:56
handle только объект а нам его нужно
00:13:59
здесь естественно если по-честному то
00:14:04
просто х браш вот так но это не быстро
00:14:08
это не быстро потому что он все
00:14:11
возможные
00:14:12
перебирает всевозможные приведения типов
00:14:14
поэтому мы можем по оси плюс плюс на
00:14:17
могу сказать то что ты давай ко мне не
00:14:19
перебирая все типы
00:14:21
а ты давай ко мне просто при виде вот к
00:14:24
этому типу то есть реинтерпретации это
00:14:25
значит то что типа
00:14:27
считай вот это другим типом это самое
00:14:29
быстрое приведение самое небезопасное но
00:14:31
самое быстрое
00:14:32
вот и таким образом собственно прибылью
00:14:35
привели к прошу и теперь феофил rect
00:14:37
всем доволен собственно если мы сейчас
00:14:39
запустим то мы увидим кое-что интересное
00:14:43
а именно черный экран
00:14:46
но и каждый раз он перерисовывать каждый
00:14:50
раз при движении окна по изменению
00:14:52
размера каждый раз он будет
00:14:55
перерисовываться потому что мы делаем
00:14:58
это в в процедуре paint так пойдем
00:15:07
дальше что на данном этапе важно понять
00:15:11
в гадай есть так называемые операторские
00:15:15
скобки
00:15:16
это условное название то есть перед тем
00:15:20
как начать рисовать мы всегда вызываем
00:15:22
обязательно бегин paint после окончания рисованием
00:15:25
всегда обязательно должны вызвать and
00:15:27
paint чтобы
00:15:28
систему освободила контекст устройства
00:15:31
иначе там всякие графические артефакты
00:15:34
пойдут на видео я это показывал не буду
00:15:38
но если хотите можете сами
00:15:39
поэкспериментировать убрать вот этот
00:15:40
вызов или убрать вот этот вызвать и
00:15:43
посмотреть как будет себя вести вообще я
00:15:45
приветсвую всякие всякие эксперименты
00:15:48
только не сорвись себе комп и
00:15:50
чтобы потом на меня не жаловать вот
00:15:53
значит фил rect мы сделали но если мы
00:15:56
хотим если мы не хотим какую-то
00:15:58
стандартную кисточку мы конечно же
00:16:00
должны создать новую вот тут начинаются
00:16:03
сложности вернее не сложности но мне
00:16:07
например поначалу когда я все дело
00:16:08
только начал изучать мне немножко не
00:16:10
просто было понять лоб аджаль
00:16:12
используется тот же принцип только там
00:16:14
бегинсс бегин
00:16:17
сцен по момент sensotouch о такой в
00:16:20
direct x тоже кинстинтин с девятой
00:16:22
версии было
00:16:25
но мне было было не совсем понятно то
00:16:28
есть в гадай устроена как когда мы
00:16:35
делаем фил rect это ладно мы ему можем
00:16:36
указать конкретную кисть это все хорошо
00:16:42
но есть такая вещь как например
00:16:47
rectangle то есть мы хотим нарисовать
00:16:50
прямоугольник и давайте мы его нарисуем
00:16:53
лесу естественно контексте устройство мы
00:16:57
его нарисуем нас есть клиенты rect
00:17:00
клиента rect клиента rect tool est plus
00:17:08
ну допустим на 10 пикселей левее вот
00:17:12
левее от левого края экрана на 10
00:17:17
пикселей ниже нашего края экрана ниже
00:17:25
верхнего края экран то есть ниже
00:17:27
клиентской области дальше какая штука
00:17:31
rectangle
00:17:32
он не принимает ширину и высоту он
00:17:42
принимает координату одной точке то есть
00:17:47
координату левой верхней точке это как
00:17:49
раз типа как x и y и координату правой
00:17:52
нижней точке выраженную в правый нижний
00:17:57
координате
00:17:58
то есть по сути но сейчас я плачу вам
00:18:02
покажу да это тоже не всегда сразу легко
00:18:05
понять клиент райт плюс ну а точнее плюс
00:18:10
минус 10 минус 10 и клиент рект .
00:18:17
boto
00:18:20
-10 вот так и если мы сейчас запустим
00:18:29
угадайте что мы сейчас увидим мы сейчас
00:18:32
увидим очень интересную вещь мы увидим
00:18:37
то что вот она рамка но внутри
00:18:41
прямоугольника ничего нет почему нет
00:18:44
ничего нет потому что рисование
00:18:48
рамки и рисование внутренней части
00:18:51
заливка
00:18:52
происходит теми объектами которые в
00:18:55
данный момент
00:18:56
выбраны в контекст устройства что значит
00:18:58
выбраны в контекст устройства объясняю
00:19:02
если мы возьмем для выбора в контекст
00:19:05
устройства устройство существует функция
00:19:07
select объект то есть select объект и
00:19:12
естественно предаетесь и
00:19:14
и давайте на всякий ну точнее для для
00:19:18
теста возьмем и попробуем порисовать
00:19:21
белой ручкой
00:19:22
то есть мы берем и aged сток объект пока
00:19:27
что детство копчик и здесь white band не
00:19:33
сказал вот но постольку поскольку я грот
00:19:40
то что гадай
00:19:43
это как бы система состояний и рисование
00:19:46
происходит тем что выбрана в текущий
00:19:48
момент
00:19:49
естественно для того чтобы не нарушить
00:19:51
все как бы
00:19:53
принципы отрисовки нам нужно каждый раз
00:19:58
когда мы делаем слив топчет мы замещаем
00:20:00
старый выбранный объект была какая-то
00:20:03
какой-то пэн выбран до черный в данном
00:20:06
случае был выбран когда он мы выбираем в
00:20:08
контекст устройства новый пин то есть но
00:20:11
вуковар уж куда лепи ролика потому что
00:20:13
прочь привести то соответственно старая
00:20:17
перестает существовать потому что с или
00:20:19
кто будет замещает объект и того же типа
00:20:22
то есть пэн если мы выбираем пэн в
00:20:26
контекст он заместить предыдущий п.н.
00:20:28
если мы выбираем браши он заместить
00:20:30
предыдущий браш
00:20:31
и естественно выберем новый пин он не
00:20:33
заместить браш
00:20:34
он заместитель на объект такого же типа
00:20:36
надеюсь это понятно если непонятно
00:20:39
спросить в комментариях а точнее объясню
00:20:45
так но что мы можем сделать когда мы
00:20:49
делаем слив топчик естественно мы может
00:20:55
даже так мы можем сохранить старый
00:21:00
выбранный объект вот таким вот образом
00:21:04
почему потому что с электро джек при
00:21:06
выборе в контекст он возвращает старый
00:21:09
объект для чего это нужно правильно для
00:21:11
того чтобы как все всех люблю люси плюс
00:21:14
плюс натворил прибери
00:21:16
заменили заменили объект соответственно
00:21:22
после того как мы с этим объектом
00:21:24
сделали
00:21:26
рисование объекта на случай ли выручка
00:21:29
либо кист ли вы там еще могут быть
00:21:31
несколько вариантов и несколько дней там
00:21:34
что может bitmap быть вот ну ладно так и
00:21:38
здесь и и здесь мы берем болт
00:21:42
дальше дальше обязательно но главное три
00:21:45
часа чуть подальше объясню сейчас
00:21:47
давайте попробуем посмотреть что у нас
00:21:50
получилось сейчас у нас по идее это
00:21:53
должен быть прямоугольник закрашен белой
00:21:59
ручкой фото с не белым пером
00:22:01
но и собственно да мы видим то что в
00:22:03
белом первом закрасится
00:22:10
но и сократился до теперь давайте
00:22:13
попробуем сделать внутренности черными
00:22:17
для этого нам нужно опять-таки
00:22:23
теперь уже выбрать новую как вы
00:22:26
догадались кисть то есть мы ее сохраняем
00:22:30
старую музыку сохраняем в переменную
00:22:45
вот так вот теперь как вы видите мы
00:22:49
выбрали в контекст устройства черную
00:22:51
кисть через детства копчик и selectable
00:22:54
и естественно здесь обратно нужно
00:22:57
вернуть обратно нужно вернуть вот у нас
00:23:03
спорт-бар ваш вот так и давайте
00:23:08
посмотрим что у нас получилось вот у нас
00:23:10
получилось белой ручкой
00:23:17
как бы обведем контур но поступка звук у
00:23:19
нас он тоже белый мы этого не увидим и
00:23:25
фон закрасила чёрным цветом потому что
00:23:28
мы выбрали черную кисть в контекст
00:23:30
устройства но что если мы хотим обводку сделать не
00:23:36
белой ручкой и может быть мы хотим ее
00:23:38
сделать потолще
00:23:41
легко и просто мы берем делаем и создаем
00:23:46
новую новое перо или новую ручку или кто
00:23:50
как называет без разницы а пятки crate
00:23:54
прям так чего тебе не нравится почему ты
00:24:00
мне ничего не подсказываешь
00:24:02
а ну да вот я молодец конечно не и бэн
00:24:11
хит
00:24:15
вот так и собственно здесь мы можем
00:24:20
создать то есть три конструктора опять
00:24:24
кикает пэн а увидели у меня в коде creed
00:24:26
пэн пошли в google
00:24:28
набрали creed пэн winapi msdn перешли
00:24:31
почитали какие параметры передавать за
00:24:35
что они отвечают и все значит первым
00:24:41
делом нас ждет стиль мы делаем пэн style
00:24:44
solid на самом деле в 98 винды в миле
00:24:48
ними в 2000 и даже в их списке когда я
00:24:51
всем этим баловался все стили работали
00:24:56
нормально тут есть еще ps год по моему
00:25:01
да вот поездов это точками
00:25:05
рисуются но сейчас почему-то навсегда у
00:25:09
меня создавалась когда я писал примерно
00:25:11
у меня почему-то создавался до сплошная
00:25:13
поэтому давайте не будем поможет рукава
00:25:15
и а стран сплошной так теперь допустим
00:25:18
нам нужно 5 пикселей толщины берем 5
00:25:21
пикселей все проще простого
00:25:22
но и теперь color лев мы можем создать
00:25:25
макросом rgb в котором у нас собственно
00:25:29
составляющие там но какой цвет red green
00:25:33
blue ну давайте пускай будет блюд
00:25:35
соответственно люблю это у нас 0
00:25:37
составляющей здесь но составляющая для
00:25:40
зеленого цвета и 250 составляющие 205
00:25:43
составляющей для синего цвета теперь мы
00:25:48
берем естественно в select объект мы
00:25:51
берем и выбираем уже нашу кисть кисть
00:25:57
перо там я не знаю как это назвать нет
00:25:59
перо все-таки стоит обратно туда
00:26:02
пирог мы выбираем ю.н. вот так теперь
00:26:10
но постольку поскольку этот пин мы
00:26:14
создали вручную
00:26:16
дабы избежать утечки памяти каждый раз
00:26:20
на каждом этапе перетасовки на каждый
00:26:22
раз будет создаваться по новый нам
00:26:23
обязательно нужно после того мы с этим
00:26:27
все закончили нам обязательно нужно его
00:26:28
удалить то есть вот здесь вот мы вернули
00:26:30
старый старая 1 л п и вот здесь вот мы
00:26:34
можем сделать до лет объект далек топчет
00:26:38
и вот этот jpn
00:26:41
если этого не сделать вот если этого не
00:26:44
так чуть не нравится да или а ну да даль
00:26:51
итоге если этого не сделать да вот этот
00:26:54
пэн он занимает в памяти
00:26:57
мало места но если этого не сделать и вы
00:27:01
будете программировать какую то анимацию
00:27:02
с каждым кадром она будет создаваться
00:27:04
нового нового нового нового новое новое
00:27:06
и в один прекрасный момент выживет все
00:27:10
оперативку доступно это так называемый
00:27:13
как раз будет классический memory leaks
00:27:15
что называем утечка памяти
00:27:16
поэтому всегда запомните всегда всегда
00:27:20
всегда как си плюс плюс делаем создал
00:27:24
попользовался отключи
00:27:28
удали запомните это повторить и как
00:27:32
мантру там как молитву я не знаю как что
00:27:36
угодно но не забывайте про это никогда
00:27:40
если вдруг у вас приложение течет память
00:27:42
в первую очередь проверьте что вы все
00:27:44
объекты освобождаете корректно но
00:27:49
давайте попробуем
00:27:53
но ничего себе смотрите да вот она вот
00:27:57
она наша прелесть ну и давайте до кучи
00:28:00
также сделаем на в этом уроке давайте
00:28:03
сделаем еще ой ха прим как бы
00:28:09
хэппи-эндом сделать сделаем всех и браш
00:28:11
то есть это новая кисть у него прошла но
00:28:16
и вот смотрите несколько видов мы можем
00:28:20
сделать кредит так и with solid brass
00:28:25
это сплошная кисть заливкой и мы можем
00:28:29
сделать creed паттерн браш вот для
00:28:38
паттерн браш такое господи
00:28:43
kreed паттон прошло и и для патон браш
00:28:47
как раз мы да чтож такое-то мы передаем
00:28:51
хендл картинки загруженный мы это
00:28:56
обязательно потом рассмотрим но сейчас у
00:28:58
нас пока
00:28:59
solid прошу и задаем тут просто цвет rgb
00:29:06
но давайте какой нибудь там давайте 2552
00:29:10
5 5 и 0 это у нас по моему
00:29:14
краснозелёных какой зв дают
00:29:18
то да и вот как бы ничего не сделал
00:29:21
потому что опять таки что я забыл
00:29:24
поставьте на паузу и в комментарии
00:29:26
напишите что я забыл сделать
00:29:27
шучу главное для себе сами себя
00:29:29
проверьте что я забыл сделать правильно
00:29:31
я забыл я забыл я забыл выбрать
00:29:36
собранную кисть в точнее созданную кисть
00:29:40
в контекст устройства
00:29:43
вот мы выбираем так так вот это уберём
00:29:47
пока здесь you
00:29:51
брошь так и естественно здесь мы вы но
00:29:56
здесь мы уже старые выбираем да а
00:29:59
обязательно мы должны здесь это удалить
00:30:03
я бы возможно продемонстрировал но он
00:30:07
при достаточно высокой частоте
00:30:08
обновления кадров
00:30:10
память вы жили довольно долго довольно
00:30:12
быстро поэтому бы не хочется наведете
00:30:14
внимание на видео это демонстрирую чтобы
00:30:17
ненароком не запороть и весь видосы тем
00:30:20
более уже полчаса снимаем вот и и
00:30:21
полчаса
00:30:22
так вот пожалуйста вот у нас получился у
00:30:28
нас получился прямоугольник с обмоткой
00:30:37
синенькой и с желтым фоном допустим мы
00:30:42
хотим сделать мы хотим сделать например
00:30:48
мы хотим сделать вот такую штуку я даже
00:30:53
не помню сможет ли нам это сделать верю
00:30:57
ночь с попробуем допустим мы не хотим
00:30:59
вообще делать обводку на этот случай
00:31:01
есть такой стоковый объект до есть но у
00:31:04
пэн что есть люпин то есть это значит
00:31:07
никакой обводки ваши дела и никуда еще и
00:31:11
выбрал молодец и вы молчите шли не
00:31:14
сказали там
00:31:15
вид стоп ну так и
00:31:24
и вот как видите да обводка исчезла
00:31:28
вообще то есть это значит без забот ки
00:31:30
тоже самое
00:31:31
разумеется то же самое можно сделать и
00:31:35
вспомнил и для для заливки то есть для
00:31:43
кисти ну броши броши я сказал вот и
00:31:51
сейчас будет у нас такой вот как суслик
00:31:55
да ты суслика видишь нет а он есть так и
00:31:58
прямоугольник мы его видим нет а он есть
00:32:01
просто нарисован нулевым обведен нулевым
00:32:04
пером и закрашен 0 кистью так давайте
00:32:14
ответят минимум брат на это дело здесь
00:32:19
не убрав в таком виде я сохраню
00:32:25
исходник да вот он можете
00:32:30
поэкспериментировать да если что если
00:32:32
картинка слишком большая то ее размер
00:32:34
задается вот здесь его нет instance вот
00:32:37
здесь здесь координата от левого угла
00:32:40
экрана а здесь
00:32:42
а-да-да-да что я еще хотел показать так
00:32:45
в rect в структуре rect так же как и для
00:32:49
rectangle чтобы не путались координаты
00:32:53
хранятся в виде координаты левого
00:32:56
верхнего угла координата правого нижнего
00:32:58
угла сейчас объясню что то такое вот если мы
00:33:04
смотрим в координату это естесно
00:33:07
клиентские то есть клиент rect вот
00:33:09
координата 00 и видите райт координата
00:33:13
это в данном в частном случае получается
00:33:15
ширина но на самом деле это не ширина
00:33:17
это
00:33:19
x-координата правой нижней точке вот она
00:33:22
x-координата вот она y-координата вот
00:33:24
именно по этим координатам строится
00:33:27
этот строится
00:33:30
rectangle но здесь пока это может быть
00:33:34
не сильно наглядно наглядно
00:33:36
продемонстрирую я конкретнее то в
00:33:39
следующем уроке а сейчас уже целых почти
00:33:42
34 минуты поэтому будем закругляться в
00:33:46
сегодняшнем уроке мой дискорд спалил на
00:33:50
этом я с вами друзья прощаюсь до
00:33:55
следующего видео
00:33:57
вам же хочу напомнить то что ссылка на
00:34:00
исходник будет в описании к видео
00:34:03
если видос понравился ставьте лайки если
00:34:05
не понравился ставьте дизлайки в
00:34:07
комментариях пишите что понравилось что
00:34:09
не понравилось но на этом я с вами
00:34:12
прощаюсь всем пока и до новых встреч

Описание:

В данном видео начинаем изучать основы программирования графики по Windows. Рассматриваем такие понятия GDI как Pen, Brush, Rectangle. Ссылка на репозиторий с исходником из данного урока: https://github.com/xipho/gamehacklab-graphics-lessons Все интересующие вас вопросы вы можете задать на нашем форуме https://gamehacklab.ru/ Финансово можно поддержать наш канал через форму пожертвования на форуме.

Готовим варианты загрузки

popular icon
Популярные
hd icon
HD видео
audio icon
Только звук
total icon
Все форматы
* — Если видео проигрывается в новой вкладке, перейдите в неё, а затем кликните по видео правой кнопкой мыши и выберите пункт "Сохранить видео как..."
** — Ссылка предназначенная для онлайн воспроизведения в специализированных плеерах

Вопросы о скачивании видео

mobile menu iconКак можно скачать видео "01. Основы графики Windows. Изучаем GDI. Pen, Brush, Rectangle."?mobile menu icon

  • Сайт http://unidownloader.com/ — лучший способ скачать видео или отдельно аудиодорожку, если хочется обойтись без установки программ и расширений. Расширение UDL Helper — удобная кнопка, которая органично встраивается на сайты YouTube, Instagram и OK.ru для быстрого скачивания контента.

  • Программа UDL Client (для Windows) — самое мощное решение, поддерживающее более 900 сайтов, социальных сетей и видеохостингов, а также любое качество видео, которое доступно в источнике.

  • UDL Lite — представляет собой удобный доступ к сайту с мобильного устройства. С его помощью вы можете легко скачивать видео прямо на смартфон.

mobile menu iconКакой формат видео "01. Основы графики Windows. Изучаем GDI. Pen, Brush, Rectangle." выбрать?mobile menu icon

  • Наилучшее качество имеют форматы FullHD (1080p), 2K (1440p), 4K (2160p) и 8K (4320p). Чем больше разрешение вашего экрана, тем выше должно быть качество видео. Однако следует учесть и другие факторы: скорость скачивания, количество свободного места, а также производительность устройства при воспроизведении.

mobile menu iconПочему компьютер зависает при загрузке видео "01. Основы графики Windows. Изучаем GDI. Pen, Brush, Rectangle."?mobile menu icon

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

mobile menu iconКак скачать видео "01. Основы графики Windows. Изучаем GDI. Pen, Brush, Rectangle." на телефон?mobile menu icon

  • Вы можете скачать видео на свой смартфон с помощью сайта или pwa-приложения UDL Lite. Также есть возможность отправить ссылку на скачивание через QR-код с помощью расширения UDL Helper.

mobile menu iconКак скачать аудиодорожку (музыку) в MP3 "01. Основы графики Windows. Изучаем GDI. Pen, Brush, Rectangle."?mobile menu icon

  • Самый удобный способ — воспользоваться программой UDL Client, которая поддерживает конвертацию видео в формат MP3. В некоторых случаях MP3 можно скачать и через расширение UDL Helper.

mobile menu iconКак сохранить кадр из видео "01. Основы графики Windows. Изучаем GDI. Pen, Brush, Rectangle."?mobile menu icon

  • Эта функция доступна в расширении UDL Helper. Убедитесь, что в настройках отмечен пункт «Отображать кнопку сохранения скриншота из видео». В правом нижнем углу плеера левее иконки «Настройки» должна появиться иконка камеры, по нажатию на которую текущий кадр из видео будет сохранён на ваш компьютер в формате JPEG.

mobile menu iconСколько это всё стоит?mobile menu icon

  • Нисколько. Наши сервисы абсолютно бесплатны для всех пользователей. Здесь нет PRO подписок, нет ограничений на количество или максимальную длину скачиваемого видео.