|
-3 / 16 / 2
Регистрация: 21.11.2013
Сообщений: 151
|
|
GDI+ , принцип перемещения графических объектов29.06.2022, 23:00. Показов 2268. Ответов 10
Метки нет (Все метки)
Вообщем дано.
GDIplus::Graphics созданный с memory device context. Рисую фигуры, обновляю окно посредством UpdateLayeredWindow. Все ок. Интересует такой вопрос: Например имеется нарисованный квадрат, или некий блок текста. Нужно этот блок переместить, или анимировать... Какой принцип ? - удаляем нарисованый блок, посредством рисования ректангла с фоновым цветом; - рисуем заново текст/квадрат (неважно) применяя другие координаты; - обновляем через invalidate или UpdateLayeredWindow Или может есть уже готовый способ попроще, например связанный с трансформацией (word Transformation) графики? Тут каков принцип? Может есть вариант, уже нарисованную часть экрана сграбить в некий блок (регион), применить трансформацию, обновить клиентскую область. Знающие люди, ответьте...
0
|
|
| 29.06.2022, 23:00 | |
|
Ответы с готовыми решениями:
10
Методы перемещения графических объектов в Canvas
Изменение цвета, размеров и перемещения графических элементов |
|
COM‐пропагандист
|
|
| 30.06.2022, 06:52 | |
|
1. Создаёте изображение в памяти.
2. Стираете, рисуете там что нужно по таймеру или по событию. 3. Говорите системе, что определённая область окна стала недействительной и требует перерисовки (InvalidateRect+прямоугольник+TRUE). 4. В обработчике WM_PAINT копируете прямоугольник из изображения в памяти на окно. Добавлено через 19 минут Как рисовать квадрат? Давайте представим, что у вас не квадрат, а некий объект, который существует на сцене и его можно нарисовать. Объект должен знать как себя прорисовывать, для этого у него есть метод Render. Сцена содержит список объектов, которые следует рисовать, обходит список и вызывает у каждого объекта Render, передавая контекст для рисования (GRAPHICS или HDC). Координаты объектов не хранят в самом объекте, координаты хранит сцена. Сцена следит за тем где каждый объект расположен, и перед рисованием объекта сцена устанавливает применяет матрицу через ModifyWorldTransform. Так как у нас установлена матрица объекта, то объект рисуется там где нам надо. Объект же про мировую матрицу знает ничего и рисует себя всякий раз так, будто он в центре координат. Когда вы анимируете объекты, вы не меняете их координаты, вы устанавливаете новую матрицу объекта с небольшим сдвигом относительно старой, стираете сцену, визуализируете её заново.
0
|
|
|
-3 / 16 / 2
Регистрация: 21.11.2013
Сообщений: 151
|
|
| 30.06.2022, 07:51 [ТС] | |
|
Прочитайте внимательно мои вопросы и дайте ответы без КОПИПАСТА. То что вы написали, я немного не об этом спрашивал.
Не хотите нормально отвечать - не отвечайте вовсе.
0
|
|
|
COM‐пропагандист
|
|
| 30.06.2022, 08:41 | |
|
Вы определитесь: вам нужен готовый способ или рисование руками через GDI?
Если вы рисуете руками через GDI, то вам придётся рисовать покадрово. Если вам нужен готовый способ, то берите любой графический двигатель и вперёд.
0
|
|
|
-3 / 16 / 2
Регистрация: 21.11.2013
Сообщений: 151
|
|
| 30.06.2022, 08:55 [ТС] | |
|
Да я еще никогда не был настолько ОПРЕДЕЛЕННЫЙ как сейчас.
Я ж написал - gdi+ Я же написал 3 вопроса, по теме . Вы можете процитировать каждый из них и дать на них свой ответ? Неужели так сложно, если вы в этом разбираетесь?
0
|
|
|
COM‐пропагандист
|
|||||||||
| 30.06.2022, 09:56 | |||||||||
|
Вот ответ на первый вопрос:
0
|
|||||||||
|
-3 / 16 / 2
Регистрация: 21.11.2013
Сообщений: 151
|
|
| 30.06.2022, 11:21 [ТС] | |
|
Вот же упертый, ну все равно надо под себя подтесать, пофиг что не различаете где кончаются вопросы, где начинаются. Пофиг что выдираете цитаты из контекста. Извините, разбираться в вашей каше не хочу, ответы более от вас получать - тоже.
Еще раз, может кто другой отвтетит. Нет так нет. Поищу в другом месте - не впервой. Вообщем цитирую половигу своего первого поста: 1. Какой принцип ? - удаляем нарисованый блок, посредством рисования ректангла с фоновым цветом; - рисуем заново текст/квадрат (неважно) применяя другие координаты; - обновляем через invalidate или UpdateLayeredWindow 2. Или может есть уже готовый способ попроще, например связанный с трансформацией (word Transformation) графики? Тут каков принцип? 3.Может есть вариант, уже нарисованную часть экрана сграбить в некий блок (регион), применить трансформацию, обновить клиентскую область. Просто просьба, внятно , (там где нужны доп. пояснения - объясните) - дайте ответы на вопросы 1,2,3. Спасибо.
0
|
|
|
Модератор
|
|
| 30.06.2022, 13:50 | |
|
Если графика сложная и используется афинная трансформация то можно отрисовать статичную часть в буферное изображение. Это буферное изображение уже переносить с трансформацией в нужный Graphics. Если же графика элементарная то буферное изображение необязательно. Очищать Graphics можно методом Clear.
0
|
|
|
-3 / 16 / 2
Регистрация: 21.11.2013
Сообщений: 151
|
|
| 30.06.2022, 14:43 [ТС] | |
|
Статичную часть в б.и. как, в гди+?
Это типа пункт 3?
0
|
|
|
Модератор
|
|
| 02.07.2022, 00:35 | |
|
FreakMurderer, создаешь Bitmap; создаешь Graphics ассоциированный с ним; рисуешь туда как обычно без трансформаций. Теперь в этом битмапе у тебя изображение статичное. Далее уже отрисовываешь его с трансформациями как ты это делаешь на данный момент (на DC окна если это просто отрисовка или на контекст в памяти если это слоеное окно).
0
|
|
|
-3 / 16 / 2
Регистрация: 21.11.2013
Сообщений: 151
|
|||
| 02.07.2022, 07:52 [ТС] | |||
|
The trick,
P.s. этот способ и есть так называемый мною п.3 ?
0
|
|||
| 02.07.2022, 07:52 | |
|
Помогаю со студенческими работами здесь
11
Создать анимацию трансформации (увеличения) и движения (перемещения) графических обьектов одновременно
Копирование GDI объектов
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|