|
23 / 23 / 6
Регистрация: 11.12.2011
Сообщений: 300
|
|
Исказить изображение03.03.2013, 21:24. Показов 1496. Ответов 16
Метки нет (Все метки)
Есть ли стандартные visual c++ функции для искажения рисунка?
Добавлено через 5 минут Есть такие прикидки. Беру с рисунка квадрат, например с длиной стороны 3. Пишу данный квадрат в массив. И вот мне надо как-то заменить элементы массива по кругу. Не на 90 градусов развернуть массив, а сделать, что-то типа такого исходный: 1 2 3 4 5 6 7 8 9 после обработки 4 1 2 7 5 3 8 9 6 лучше конечно, если бы можно было вывести какую-то закономерность и найти элементы массива которые находятся на грани вписанного в квадрат круга и крутить их, но я уж вообще не допру как
0
|
|
| 03.03.2013, 21:24 | |
|
Ответы с готовыми решениями:
16
Как исказить картинку таким образом На небольшом логотипе создать текст, а потом его исказить, как в титрах звёздных войн Построить прямоугольный импульс, добавить шум , исказить и восстановить прямоугольный импульс |
|
Модератор
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,859
|
|
| 03.03.2013, 23:01 | |
|
0
|
|
|
23 / 23 / 6
Регистрация: 11.12.2011
Сообщений: 300
|
|
| 04.03.2013, 00:48 [ТС] | |
|
ну по сути да, это будет матрица.
0
|
|
|
Модератор
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,859
|
|
| 04.03.2013, 00:53 | |
|
любая обработка изображений сводится к работе с матрицами
посмотри http://vnuki.org/library/book/457037 там это хорошо описано
0
|
|
|
23 / 23 / 6
Регистрация: 11.12.2011
Сообщений: 300
|
|
| 04.03.2013, 01:44 [ТС] | |
|
спасибо за книгу, пытаюсь скачать.
Тут возникла проблема с копированием самого квадрата пикселей. То есть у меня есть 2 координаты x, y и собственно половина длинны стороны. А вот как перекопировать данный кусок на новый битмап не пойму. Попробовал создать массив Color, но компилятор сказал, что нельзя такой массив делать. Пробую CopyRect, тоже не получается. может я что-то не так делаю?!
0
|
|
|
Модератор
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,859
|
||||||||
| 04.03.2013, 01:54 | ||||||||
|
надо так
и SetPixel установить пиксел это надежные но тормознутые функции когда разберешься то BitBlt,memcpy
0
|
||||||||
|
23 / 23 / 6
Регистрация: 11.12.2011
Сообщений: 300
|
||||||
| 04.03.2013, 02:11 [ТС] | ||||||
|
SetPixe(), GetPixel() как раз и пользуюсь. Мне сейчас на скорость особо роли не играет.
А вот с COLORREF ошибка
0
|
||||||
|
Модератор
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,859
|
|
| 04.03.2013, 02:17 | |
|
1
|
|
|
23 / 23 / 6
Регистрация: 11.12.2011
Сообщений: 300
|
||||||
| 04.03.2013, 02:25 [ТС] | ||||||
|
Походу да. Решил копирование так:
0
|
||||||
|
Модератор
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,859
|
|
| 04.03.2013, 02:27 | |
|
0
|
|
|
23 / 23 / 6
Регистрация: 11.12.2011
Сообщений: 300
|
|
| 04.03.2013, 02:38 [ТС] | |
|
А какие есть по проще способы. Я если честно, то смутно понимаю, что такое CLI. Дело в том, что никогда не кодил на Visual C++, а тут поставили задачу. Вот сижу и в большинстве гуглю и на форуме спрашиваю, то что совсем уже найти не могу.
Добавлено через 4 минуты Задачка вроде бы не сложная. Реализовать визуальный эффект от взрыва на visual c++ вид сверху. То есть надо участок рисунка как-то исказить или применить какой-то фильтр, без применения директ икс и опенГЛ. Но вот как сел делать, так на каждом шагу ступор...
0
|
|
|
Модератор
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,859
|
|||
| 04.03.2013, 02:41 | |||
|
но я пишу на MFC или WinApi просто директ икс заточен на обработку изображений
0
|
|||
|
23 / 23 / 6
Регистрация: 11.12.2011
Сообщений: 300
|
|
| 04.03.2013, 03:14 [ТС] | |
|
Да, именно фишка в том, чтобы не использовать мощных библиотек которые под это заточены.
Ну вот у меня выходит основной затык в последовательной обработке куска рисунка. То есть если это взрыв, то значит будет радиус взрыва, а значит надо как-то как минимум немного перекрасить пиксели данного круга, но так как это анимация надо сделать это как-то динамически и наглядно. То есть подкрасить маленький кружок, потом кружок чуть больше и так до максимально указаного радиуса. Была идея рисовать черный круг определенного радиуса. Потом вырезать квадрат пикселей с вписанным ранее кругом. Потом проверять все пиксели и если у пикселя есть сверху, снизу, справа и слева черные пиксели, то как-то подкрашивать его (например затемнить можно). А потом данный временный массив запихнуть назад в исходный, а исходный прорисовать по новой. Могут конечно быть проблемы с тем, что на рисунке скорее всего могут присутствовать свои черные пиксели, но это думаю не очень страшно. А вот с этим кругом даже не знаю - адекватная ли идея или полный бред ![]() Добавлено через 19 минут Кстати очень интересная книга. Спасибо большое за ссылочку и конечно же за помощь.
0
|
|
|
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
|
||||||||
| 04.03.2013, 16:03 | ||||||||
|
Graphics.TranslateTransform Image.RotateFlip Добавлено через 3 минуты Или GIF взрыва в форму вставить ? Добавлено через 28 минут Мысль такая : Создать массив частиц в одной стартовой точке И в рандомном направлении раскидать По мере движения увеличивать размер и уменьшать яркость частиц. Вот, что -то попытался, на взрыв может не тянет ![]() ну лучше чем ни чего Код можно просто скопипастить ничего не добавляя на форму : ( Вместо Explosion , во второй строке вставьте имя своего проекта Form1.h
1
|
||||||||
|
23 / 23 / 6
Регистрация: 11.12.2011
Сообщений: 300
|
|
| 05.03.2013, 07:43 [ТС] | |
|
MrCold, сейчас пробую написать на win32 API, так как заметил, что меньше кода которого я вовсе не понимаю.
По поводу сделать сделать анимацию взрыва, я уже думал. То есть запилить объект с анимацией и накладывать его на исходное изображение, а после на месте взрыва как-то немного подзатемнить рисунок. Но тут есть пару нюансов: 1. нужно сделать так, чтобы пользователь мог настраивать радиус взрыва 2. ну и как собственно накладывать анимацию поверх какой-то точки на рисунке я тоже не знаю Спасибо за код, посмотрю как реализовали. Добавлено через 10 минут Интересная анимация ![]() Добавлено через 12 часов 19 минут В общем кое-что написал. Проект находится тут . Если кто решится просмотреть код, то пишите, что не так.
0
|
|
|
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
|
|||||||
| 05.03.2013, 16:38 | |||||||
получим red == 0 red = 0 red -1 получим red == 255 Добавлено через 10 минут ![]() Мне кажется у вас не то совсем . Надеюсь, что я просто не в теме . Возможно (мне подсказали ) в задании речь идет о 2 - мерной математической модели взрыва Трудно судить когда не понимаешь что к чему
0
|
|||||||
|
23 / 23 / 6
Регистрация: 11.12.2011
Сообщений: 300
|
|
| 05.03.2013, 16:51 [ТС] | |
|
Ну это выходит не взрыв, а ударная волна. То есть самого взрыва не происходит, а есть какой-то эпицентр и от него идет волна. Да, вполне может быть, что совсем не то написал. Но думаю в скором времени я узнаю точно, что к чему и отпишусь тут если кому-то это будет интересно
1
|
|
| 05.03.2013, 16:51 | |
|
Помогаю со студенческими работами здесь
17
Подскажите, как сделать в html, чтобы изображение накладывалось на другое изображение?
Можно ли задать какое-нибудь дефолтное изображение, если не найдено изображение по ключу? Дано изображение произвольного треугольника, вписанного в окружность. Построить изображение его ортоцентра Как сделать прозрачным фон изображение, а не само изображение? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|