This media is not supported in your browser
VIEW IN TELEGRAM
Эффект пламени. GDI+
Я уже использовал этот эффект тут.
Сейчас просто вынес два похожих алгоритма в отдельную тему.
Одинарный клик на поле - старт/стоп таймера.
Двойной клик сбросит огонь в стартовую нижнюю позицию.
Исходник (zip) 61 Кб. Delphi XE 7,10,11
Прога (zip) 910 Кб.
Я уже использовал этот эффект тут.
Сейчас просто вынес два похожих алгоритма в отдельную тему.
Одинарный клик на поле - старт/стоп таймера.
Двойной клик сбросит огонь в стартовую нижнюю позицию.
Исходник (zip) 61 Кб. Delphi XE 7,10,11
Прога (zip) 910 Кб.
🔥7
Договорился...
По запросу Артёма в поворотнике изображения появилась направляющая сетка.
Я обещал сделать в марте )))
Оставались последние часы
По запросу Артёма в поворотнике изображения появилась направляющая сетка.
Я обещал сделать в марте )))
Оставались последние часы
👍4🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
Пламенный текст. GDI+
Трудно удержаться, чтобы не объединить этот текст и этот эффект.
Что получилось - в заставке.
Дополнительные полезняшки в исходнике:
- Получить размеры текста для GDI+
- Получить полупрозрачный TGPBitmap
Одинарный клик на поле - старт/стоп таймера.
Двойной клик сбросит огонь в стартовую нижнюю позицию.
Исходник (zip) 61 Кб. Delphi XE 7,10,11
Прога (zip) 908 Кб.
Трудно удержаться, чтобы не объединить этот текст и этот эффект.
Что получилось - в заставке.
Дополнительные полезняшки в исходнике:
- Получить размеры текста для GDI+
- Получить полупрозрачный TGPBitmap
Одинарный клик на поле - старт/стоп таймера.
Двойной клик сбросит огонь в стартовую нижнюю позицию.
Исходник (zip) 61 Кб. Delphi XE 7,10,11
Прога (zip) 908 Кб.
🔥5👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Синусоидальный волновой эффект
Применимо для анимации флага, например.
Сам эффект без чего либо экзотического, всё на обычных TBitmap'ах.
При выводе использую GDI+ исключительно из-за приятного масштабирования.
И, конечно, наша любимая таблица синусов!
По проге:
- Параметры волны в подвале окна: Амплитуда, Частота, Вертикально/Горизонтально.
- За фазу отвечает таймер. Клик по полю - остановить/запустить таймер.
Вики: Статья по синусоидальной волне.
Исходник (zip) 215 Кб. Delphi XE 7,10,11
Прога (zip) 1.08 Мб.
Применимо для анимации флага, например.
Сам эффект без чего либо экзотического, всё на обычных TBitmap'ах.
При выводе использую GDI+ исключительно из-за приятного масштабирования.
И, конечно, наша любимая таблица синусов!
По проге:
- Параметры волны в подвале окна: Амплитуда, Частота, Вертикально/Горизонтально.
- За фазу отвечает таймер. Клик по полю - остановить/запустить таймер.
Вики: Статья по синусоидальной волне.
Исходник (zip) 215 Кб. Delphi XE 7,10,11
Прога (zip) 1.08 Мб.
🔥6👍2
VirtualTreeView for Delphi XE 11
Понадобился под XE11. У автора компонента такой версии нет. Поэтому небольшие телодвижения:
1. Качаем у автора.
2. В Delphi Tools-Options-Language-Library в поле Library Path добавляем путь к исходникам (картинка).
3. В Delphi открываем \Packages\RAD Studio 10.3\VirtualTreeView.groupproj
4. Compile All, нас выбрасывает в модуль VirtualTreesR.
5. В VirtualTreesR {$IMPLICITBUILD OFF} меняем на {$IMPLICITBUILD ON}
6. Compile All, нас выбрасывает в модуль VirtualTreesD.
7. Убираем VirtualTreesR:
9. Встаём на VirtualTreesD26.bpl и по правой кнопке - Install.
Отпишитесь, если есть возможность, как у кого прошло.
Понадобился под XE11. У автора компонента такой версии нет. Поэтому небольшие телодвижения:
1. Качаем у автора.
2. В Delphi Tools-Options-Language-Library в поле Library Path добавляем путь к исходникам (картинка).
3. В Delphi открываем \Packages\RAD Studio 10.3\VirtualTreeView.groupproj
4. Compile All, нас выбрасывает в модуль VirtualTreesR.
5. В VirtualTreesR {$IMPLICITBUILD OFF} меняем на {$IMPLICITBUILD ON}
6. Compile All, нас выбрасывает в модуль VirtualTreesD.
7. Убираем VirtualTreesR:
requires8. Compile All - всё должно быть ок.
DesignIDE{,
VirtualTreesR};
9. Встаём на VirtualTreesD26.bpl и по правой кнопке - Install.
Отпишитесь, если есть возможность, как у кого прошло.
👍6🔥3
Поиск двух максимально удалённых друг от друга точек в массиве
// Uses: + System.Types,Зачем это понадобилось, сейчас опубликую ))) Много в сообщении не напишешь, зато искать и копипастить удобно.
// System.Generics.Collections, System.Math
function FindFurthestPoints(
const A: TArray<TPointF>;
out P1, P2: TPointF): Boolean;
var
D, DMax : Double;
M, N: TPointF;
i, j: Integer;
begin
Result := Length(A)>1;
if not Result then exit;
DMax := MinDouble;
for i := 0 to High(A)-1 do
begin
M := A[i];
for j := i+1 to High(A) do
begin
N := A[j];
D := sqr(N.X-M.x)+sqr(N.Y-M.y);
if D > Dmax then
begin
DMax := D;
P1 := N;
P2 := M;
end;
end;
end;
end;
👍6🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Разделить массив точек на две прямоугольные области
Понадобилось сделать быстрый поиск ближайших точек в громадном массиве координат. Кое-что набросал в процессе. Показалось полезным показать наброски.
Тут решается задача быстро получить прямоугольные области, включающие в себя все точки массива и, по возможности, мало пересекающиеся друг с другом.
1) Поиск двух максимально удалённых точек в массиве.
2) Бежим по массиву, определяем к кому ближе очередная точка и формируем соответствующий прямоугольник.
3) Корректировка результата в том случае, если все точки оказались ближайшими только к одно из двух.
Точки можно ставить кликом, можно нажать "Добавить". В этом случае добавиться несколько случайных точек в количестве, указанном в левом нижнем SpinEdit'е.
Если есть мысли по оптимизации, поделитесь )))
Исходник (zip) 61.4 Кб. Delphi XE7.
Прога (zip) 932 Мб.
Понадобилось сделать быстрый поиск ближайших точек в громадном массиве координат. Кое-что набросал в процессе. Показалось полезным показать наброски.
Тут решается задача быстро получить прямоугольные области, включающие в себя все точки массива и, по возможности, мало пересекающиеся друг с другом.
1) Поиск двух максимально удалённых точек в массиве.
2) Бежим по массиву, определяем к кому ближе очередная точка и формируем соответствующий прямоугольник.
3) Корректировка результата в том случае, если все точки оказались ближайшими только к одно из двух.
Точки можно ставить кликом, можно нажать "Добавить". В этом случае добавиться несколько случайных точек в количестве, указанном в левом нижнем SpinEdit'е.
Если есть мысли по оптимизации, поделитесь )))
Исходник (zip) 61.4 Кб. Delphi XE7.
Прога (zip) 932 Мб.
👍6🔥3
OpenGL: Тестовое задание
Когда-то делал в одну контору. Остались исходники. Написано за ночь )
Чуть подрихтовал сейчас.
Задание (253 Кб)
Картинки для тестов (2 Мб)
Исходник (192 Кб) Delphi XE7
Прога (1.05 Мб)
Когда-то делал в одну контору. Остались исходники. Написано за ночь )
Чуть подрихтовал сейчас.
Задание (253 Кб)
Картинки для тестов (2 Мб)
Исходник (192 Кб) Delphi XE7
Прога (1.05 Мб)
👍7🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Infinite Text. GDI+
Пятница. Вечер.
Наткнулся на такой интересный эффект (CSS+JS).
Воспроизвел в дельфи.
Исходник (61 Кб) Delphi XE7
Прога (910 Кб)
Пятница. Вечер.
Наткнулся на такой интересный эффект (CSS+JS).
Воспроизвел в дельфи.
Исходник (61 Кб) Delphi XE7
Прога (910 Кб)
👍8🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
Сеть из точек. GDI+
Давно хотел сделать в дельфи этот эффект.
Исходник (61 Кб) Delphi XE7
Прога (930 Кб)
Давно хотел сделать в дельфи этот эффект.
Исходник (61 Кб) Delphi XE7
Прога (930 Кб)
🔥12
g10.gif
13.5 MB
Метель. GDI+
Вот такой эффект метели получился.
Посмотреть в браузере - Метель JS.
Для, собственно, бури:
- В проге включить Image и Auto.
- На сайте включить Автобурю.
Как обычно, свою картинку в проге можно вставить через контекстное меню "Paste" в окне отрисовки.
Исходник (193 Кб) Delphi XE7
Прога (1.06 Мб)
Вот такой эффект метели получился.
Посмотреть в браузере - Метель JS.
Для, собственно, бури:
- В проге включить Image и Auto.
- На сайте включить Автобурю.
Как обычно, свою картинку в проге можно вставить через контекстное меню "Paste" в окне отрисовки.
Исходник (193 Кб) Delphi XE7
Прога (1.06 Мб)
🔥9
This media is not supported in your browser
VIEW IN TELEGRAM
Kd-Tree. Быстрый поиск в K-мерном пространстве
У меня был отпуск в начале мая.
Отпуск - прекрасное время для решения сильно тревожащих вопросов.
Меня сильно тревожил вопрос с Kd-Tree и проблемой наибыстрейшего поиска ближайшей точки.
Для себя его решил, о чём и предоставляю материал.
Kd-Tree - это дерево поиска на гигантском массиве K-мерных данных.
Суть - построение индекса. Что получилось, судить вам.
Читать статью...
У меня был отпуск в начале мая.
Отпуск - прекрасное время для решения сильно тревожащих вопросов.
Меня сильно тревожил вопрос с Kd-Tree и проблемой наибыстрейшего поиска ближайшей точки.
Для себя его решил, о чём и предоставляю материал.
Kd-Tree - это дерево поиска на гигантском массиве K-мерных данных.
Суть - построение индекса. Что получилось, судить вам.
Читать статью...
🔥11
This media is not supported in your browser
VIEW IN TELEGRAM
Текст из "Звёздных войн". GDI+
Попросили сделать такой эффект.
Всё оформлено в одну функцию. Можно менять угол наклона, шрифт подхватит из холста. Текст, естественно, модифицируем.
Перспектива сделана на основе статьи Вывести текст в перспективе.
Кнопка Set Text установит новый текст и перезапустит показ.
Исходник (531 Кб) Delphi XE7
Прога (1.35 Мб)
Попросили сделать такой эффект.
Всё оформлено в одну функцию. Можно менять угол наклона, шрифт подхватит из холста. Текст, естественно, модифицируем.
Перспектива сделана на основе статьи Вывести текст в перспективе.
Кнопка Set Text установит новый текст и перезапустит показ.
Исходник (531 Кб) Delphi XE7
Прога (1.35 Мб)
🔥13👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Эквидистантная линия вокруг кривой
Математика построения эквидистантной линии не моя (ссылка ниже).
1. Получить отрезки кривой через метод TGPGraphicsPath.Flatten.
2. Скормить получившуюся ломаную библиотеке Clipper2.
Исходник (115 Кб) Delphi XE7. Clipper2 внутри.
Прога (960 Кб)
Математика построения эквидистантной линии не моя (ссылка ниже).
1. Получить отрезки кривой через метод TGPGraphicsPath.Flatten.
2. Скормить получившуюся ломаную библиотеке Clipper2.
Исходник (115 Кб) Delphi XE7. Clipper2 внутри.
Прога (960 Кб)
🔥9👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Direct2D. Эффект направленного размытия
Эффект аналогичен гауссовскому размытию, за исключением того, что можно исказить размытие в определенном направлении.
Исходник (462 Кб) Delphi XE7.
Прога (1.33 Мб)
Эффект аналогичен гауссовскому размытию, за исключением того, что можно исказить размытие в определенном направлении.
Исходник (462 Кб) Delphi XE7.
Прога (1.33 Мб)
🔥12
This media is not supported in your browser
VIEW IN TELEGRAM
Радиальная деформация изображения
Сделано на TBitmap.Scanline, без чего-либо дополнительного.
Билинейный фильтр взят из "Перспективной трансформации".
Исходник (175 Кб) Delphi XE7.
Прога x64 (1.26 Мб)
Пришлось компилировать в 64, потому что злой параноик касперский взъелся на 32-битный вариант.
Сделано на TBitmap.Scanline, без чего-либо дополнительного.
Билинейный фильтр взят из "Перспективной трансформации".
Исходник (175 Кб) Delphi XE7.
Прога x64 (1.26 Мб)
Пришлось компилировать в 64, потому что злой параноик касперский взъелся на 32-битный вариант.
🔥9
This media is not supported in your browser
VIEW IN TELEGRAM
Эффект лупы
Немного подшаманим в эффекте выше и получим эффект лупы.
Колесом мыши можно менять диаметр лупы.
Исходник (235 Кб) Delphi XE7.
Прога x64 (1.35 Мб)
Немного подшаманим в эффекте выше и получим эффект лупы.
Колесом мыши можно менять диаметр лупы.
Исходник (235 Кб) Delphi XE7.
Прога x64 (1.35 Мб)
🔥12👍1
TBitmap.PixelFormat
Небольшая справочная статья по свойству TBitmap.PixelFormat. Задумывается, как ненагруженный вспомогательный материал для других статей.
https://ip76.ru/bitmap-pixelformat/
Пробую некий интерактив, что нужно добавить, что удалить?
Небольшая справочная статья по свойству TBitmap.PixelFormat. Задумывается, как ненагруженный вспомогательный материал для других статей.
https://ip76.ru/bitmap-pixelformat/
Пробую некий интерактив, что нужно добавить, что удалить?
IP76
TBitmap.PixelFormat - IP76
Справочная информация по свойству TBitmap.PixelFormat. Подробный разбор каждого формата. Затронуты вопросы, как работать с палитрой.
👍8
This media is not supported in your browser
VIEW IN TELEGRAM
TBitmap.PixelFormat
Маленькая справочная статья опять выросла в какого-то здорового мутанта.
Подробный разбор каждого формата.
Затронуты вопросы, как работать с палитрой.
Конечно, исходники.
Почитать...
Маленькая справочная статья опять выросла в какого-то здорового мутанта.
Подробный разбор каждого формата.
Затронуты вопросы, как работать с палитрой.
Конечно, исходники.
Почитать...
🔥13👍3