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
This media is not supported in your browser
VIEW IN TELEGRAM
Алгоритм Рамера–Дугласа–Пойкера
Алгоритм Рамера–Дугласа–Пойкера превращает неувернно-дрожащий набор точек в уверенную ломаную, состоящую из бескомпромиссных линий.
Почитать...
Алгоритм Рамера–Дугласа–Пойкера превращает неувернно-дрожащий набор точек в уверенную ломаную, состоящую из бескомпромиссных линий.
Почитать...
🔥13
This media is not supported in your browser
VIEW IN TELEGRAM
Эффект "Прощай лето"
Незапланированный отпуск кончился безвозвратно...
Из интересного внутри:
1) GDIPlus Блюр-эффект
2) Полупрозрачный TGPBitmap
Исходник (62 Кб) Delphi XE7
Прога (908 Кб)
Незапланированный отпуск кончился безвозвратно...
Из интересного внутри:
1) GDIPlus Блюр-эффект
2) Полупрозрачный TGPBitmap
Исходник (62 Кб) Delphi XE7
Прога (908 Кб)
🔥10👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Direct2D. Морфологический эффект
Почитать про эффект на microsoft
Исходник (216 Кб) Delphi XE7
Прога (1.13 Мб)
Почитать про эффект на microsoft
Исходник (216 Кб) Delphi XE7
Прога (1.13 Мб)
🔥12
This media is not supported in your browser
VIEW IN TELEGRAM
Direct2D. Эффект Гауссова размывания
Почитать про эффект на microsoft
Исходник (293 Кб) Delphi XE7
Прога (1.19 Мб)
Почитать про эффект на microsoft
Исходник (293 Кб) Delphi XE7
Прога (1.19 Мб)
🔥13
This media is not supported in your browser
VIEW IN TELEGRAM
Direct2D. Эффект пастеризации
Суть эффекта - уменьшить количество цветов в изображении.
Чего не написано в доках:
- Опытным путём выяснено, что на каждый канал можно задать число в интервале 2..16. Всё остальное обрубается по этим значениям.
- Если не выставлять значение по какому-либо каналу, то эффект берёт значение, равное 4.
Рядом со спинами - количество уникальных цветов.
С нажатым Ctrl изменения в спинах будут синхронными.
Эффект доступен в Windows 10 и выше.
Исходник (231 Кб) Delphi XE7
Прога (1.12 Мб)
Суть эффекта - уменьшить количество цветов в изображении.
Чего не написано в доках:
- Опытным путём выяснено, что на каждый канал можно задать число в интервале 2..16. Всё остальное обрубается по этим значениям.
- Если не выставлять значение по какому-либо каналу, то эффект берёт значение, равное 4.
Рядом со спинами - количество уникальных цветов.
С нажатым Ctrl изменения в спинах будут синхронными.
Эффект доступен в Windows 10 и выше.
Исходник (231 Кб) Delphi XE7
Прога (1.12 Мб)
🔥12
This media is not supported in your browser
VIEW IN TELEGRAM
Direct2D. Эффект вращения оттенка
У эффекта один параметр - угол поворота оттенка. Угол соответствует определению тона.
Исходник (242 Кб) Delphi XE7
Прога (1.13 Мб)
У эффекта один параметр - угол поворота оттенка. Угол соответствует определению тона.
Исходник (242 Кб) Delphi XE7
Прога (1.13 Мб)
🔥12
This media is not supported in your browser
VIEW IN TELEGRAM
Циклическая смена цветового тона в палитре 8-битного изображения
Как обычно, по пятницам, вечерние посиделки не по работе.
Раз уж в предыдущем посте зашёл разговор про тон и палитру 8-битного изображения, то есть три режима:
- Smooth: мягкий, постепенный, приятный
- Harsh: имитация далёкой сварки
- Crazy: имитация сварки на изотопах в горниле реактора
Исходник простой. Обычный битмап, ни D2D, ни GDIP. Можно легко модифицировать под свои нужды.
Исходник (719 Кб) Delphi XE7
Прога (1.37 Мб)
Как обычно, по пятницам, вечерние посиделки не по работе.
Раз уж в предыдущем посте зашёл разговор про тон и палитру 8-битного изображения, то есть три режима:
- Smooth: мягкий, постепенный, приятный
- Harsh: имитация далёкой сварки
- Crazy: имитация сварки на изотопах в горниле реактора
Исходник простой. Обычный битмап, ни D2D, ни GDIP. Можно легко модифицировать под свои нужды.
Исходник (719 Кб) Delphi XE7
Прога (1.37 Мб)
🔥11
IrfanView
Волею судеб, надо было открыть файл IFF. Недолго погуглив, нашёл бесплатный просмотрщик, установки не требует, функции редактирования имеет, Undo/Redo в наличии, можно сохранить как минимум в JPEG/GIF. Судя по меню, функционал богатый. Решил, что внимания заслуживает.
Чтобы расширить функционал (как минимум, чтобы открыть IFF), качаем плагины (x64) и всё сбрасываем в подкаталог Plugins.
Чтобы сделать русский интерфейс, качаем перевод + русифицированные плагины. Перевод кладём в подкаталог Languages и настраиваем в Options-Change Language... С плагинами поступаем, как описано выше.
Пока выглядит полезным инструментом. Прошу поделиться впечатлениями.
Посмотреть+Скачать
Волею судеб, надо было открыть файл IFF. Недолго погуглив, нашёл бесплатный просмотрщик, установки не требует, функции редактирования имеет, Undo/Redo в наличии, можно сохранить как минимум в JPEG/GIF. Судя по меню, функционал богатый. Решил, что внимания заслуживает.
Чтобы расширить функционал (как минимум, чтобы открыть IFF), качаем плагины (x64) и всё сбрасываем в подкаталог Plugins.
Чтобы сделать русский интерфейс, качаем перевод + русифицированные плагины. Перевод кладём в подкаталог Languages и настраиваем в Options-Change Language... С плагинами поступаем, как описано выше.
Пока выглядит полезным инструментом. Прошу поделиться впечатлениями.
Посмотреть+Скачать
👍5🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Длина дуги эллипса через эксцентриситет
Потребовались пояснения к выводу формулы нахождения длины дуги эллипса.
Возможно, хромает изложение, сейчас не сильно хорошо со временем. Поэтому, редакционная критика приветствуется )
Статья не в публичном доступе.
Доступна по ссылке.
Потребовались пояснения к выводу формулы нахождения длины дуги эллипса.
Возможно, хромает изложение, сейчас не сильно хорошо со временем. Поэтому, редакционная критика приветствуется )
Статья не в публичном доступе.
Доступна по ссылке.
🔥6👍1
Delphi: Проблема с breakpoints в Debug 64-bit
Проблема:
Хотим отлаживать в 64-битном дебаге. Замечаем, что не работают breakpoints. Delphi их игнорирует, как-будто мы находимся в релизе. Делает их зелёными и забывает.
Лечение:
Открываем свойства проекта. Идём в Delphi Compiler - Linking. Ставим две галки на Debug information и Include remote debug symbols. Как на рисунке. Компилимся и всё работает.
Подсмотрено:
https://en.delphipraxis.net/topic/10364-breakpoints-do-not-work/
Проблема:
Хотим отлаживать в 64-битном дебаге. Замечаем, что не работают breakpoints. Delphi их игнорирует, как-будто мы находимся в релизе. Делает их зелёными и забывает.
Лечение:
Открываем свойства проекта. Идём в Delphi Compiler - Linking. Ставим две галки на Debug information и Include remote debug symbols. Как на рисунке. Компилимся и всё работает.
Подсмотрено:
https://en.delphipraxis.net/topic/10364-breakpoints-do-not-work/
🔥5👍1
Non-user Breakpoint at $00007FFD...
Проблема:
Использую стороннюю dll, написанную на С++. Сегодня получил последнюю версию библиотеки. Запуск проекта вызвал неприличную ругань, выведенную в заголовок. Так бывает, когда неконтролируемо используется DebugBreak API Windows, не анализируя, находится ли модуль в дебаге, или нет.
Лечение:
Tools > Options > Debugger Options > Embarcadero Debuggers
Ставим флаг на Ignore non-user breakpoints, как на рисунке.
Если этот параметр установлен, собственный отладчик игнорирует жестко закодированные точки останова int 3 , а также точки останова, возникающие в результате вызова метода DebugBreak API Windows.
Источник:
https://docwiki.embarcadero.com/RADStudio/Sydney/en/Embarcadero_Debuggers
Похожая проблема:
https://web-answers.ru/c/poprobujte-pojmajte-s-debugbreak.html
Просто ссылки по теме:
https://www.rsdn.org/article/vcpp/vcdebug-2.xml
https://xakep.ru/2013/12/04/61704/
https://ellysh.gitbook.io/video-game-bots-ru/manuscript/ingamebots/protection
Проблема:
Использую стороннюю dll, написанную на С++. Сегодня получил последнюю версию библиотеки. Запуск проекта вызвал неприличную ругань, выведенную в заголовок. Так бывает, когда неконтролируемо используется DebugBreak API Windows, не анализируя, находится ли модуль в дебаге, или нет.
Лечение:
Tools > Options > Debugger Options > Embarcadero Debuggers
Ставим флаг на Ignore non-user breakpoints, как на рисунке.
Если этот параметр установлен, собственный отладчик игнорирует жестко закодированные точки останова int 3 , а также точки останова, возникающие в результате вызова метода DebugBreak API Windows.
Источник:
https://docwiki.embarcadero.com/RADStudio/Sydney/en/Embarcadero_Debuggers
Похожая проблема:
https://web-answers.ru/c/poprobujte-pojmajte-s-debugbreak.html
Просто ссылки по теме:
https://www.rsdn.org/article/vcpp/vcdebug-2.xml
https://xakep.ru/2013/12/04/61704/
https://ellysh.gitbook.io/video-game-bots-ru/manuscript/ingamebots/protection
🔥6👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Контур образа: Алгоритм поиска
Проблема найти контур образа рано или поздно возникает почти у каждого. Когда возникла у меня, этот алгоритм, за неимением лучшего, пришлось придумать. Думаю, есть масса аналогов. Проблема алгоритма поиска контура образа в том, что никто не спешит им делиться.
Давно хотел написать про алгоритм. А тут ещё и пообещал.
Вот, маленькими перебежками, получилось.
Почитать и оценить )))
Проблема найти контур образа рано или поздно возникает почти у каждого. Когда возникла у меня, этот алгоритм, за неимением лучшего, пришлось придумать. Думаю, есть масса аналогов. Проблема алгоритма поиска контура образа в том, что никто не спешит им делиться.
Давно хотел написать про алгоритм. А тут ещё и пообещал.
Вот, маленькими перебежками, получилось.
Почитать и оценить )))
🔥7👍5
GDI: Полутоновое масштабирование
Возможно, для более симпатичного масштабирования, чем тот способ, что предлагает нам Canvas, будет достаточно установить полутоновый режим (HALFTONE).
Сделать установку режима растягивания в GDI можно функцией SetStretchBltMode. Рисунок слева - StretchDraw, справа - через полутон.
Возможно, для более симпатичного масштабирования, чем тот способ, что предлагает нам Canvas, будет достаточно установить полутоновый режим (HALFTONE).
Сделать установку режима растягивания в GDI можно функцией SetStretchBltMode. Рисунок слева - StretchDraw, справа - через полутон.
// StretchDraw в полутоне
procedure HalftoneStretchDraw(
ACanvas: TCanvas;
const ARect: TRect;
ABitmap: TBitmap);
var p: TPoint;
begin
GetBrushOrgEx(
ACanvas.Handle, p);
SetStretchBltMode(
ACanvas.Handle, HALFTONE);
SetBrushOrgEx(ACanvas.Handle,
p.x, p.y, @p);
StretchBlt(ACanvas.Handle,
ARect.Left, ARect.Top,
ARect.Width, ARect.Height,
ABitmap.Canvas.Handle,
0, 0, ABitmap.Width,
ABitmap.Height,
ACanvas.CopyMode);
end;
👍6🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
Комплексные числа в Delphi
Для работы с комплексными числами в Delphi есть официальный модуль System.VarCmplx. Но он работает только с вариантным типом. Хотелось бы что-нибудь по-вещественней.
В стандартной поставке Delphi, в примерах, есть проект:
...\Samples\Object Pascal\RTL\ComplexNumbers\Win32OperatorOverload.dproj.
В нём есть модуль Vassbotn.Vcl.Complex.pas. Вот в нём всё сделано на Double.
В дополнение:
Превосходная статья: Комплексные числа и геометрические узоры
Не менее превосходная статья: Как нарисовать звезду (и не только) в полярных координатах
В проге жмём Apply. С параметрами разбираемся по ходу пьесы.
Исходник (76 Кб) Delphi XE7
Прога (967 Кб)
Для работы с комплексными числами в Delphi есть официальный модуль System.VarCmplx. Но он работает только с вариантным типом. Хотелось бы что-нибудь по-вещественней.
В стандартной поставке Delphi, в примерах, есть проект:
...\Samples\Object Pascal\RTL\ComplexNumbers\Win32OperatorOverload.dproj.
В нём есть модуль Vassbotn.Vcl.Complex.pas. Вот в нём всё сделано на Double.
В дополнение:
Превосходная статья: Комплексные числа и геометрические узоры
Не менее превосходная статья: Как нарисовать звезду (и не только) в полярных координатах
В проге жмём Apply. С параметрами разбираемся по ходу пьесы.
Исходник (76 Кб) Delphi XE7
Прога (967 Кб)
🔥10👍2
Recraft: Искусственный интеллект в помощь дизайнеру
Это сервис. С помощью ИИ генерируем картинки, логотипы, реалистичные фото. И он бесплатный!!! И у людей пальцы на месте )))
Началось всё с того, что мне прислали ссылку на видео. Интерфейс очень даже френдли. Результат мега-качественный. Видео рекомендуемо к просмотру, так как там инструкция по неочевидным функциям.
Я мгновенно зарегился и залип часа на 3. С трудом оторвался, ибо дела. Очень крутая штука.
Олег, спасибо за наводку )))
Попробовать...
Это сервис. С помощью ИИ генерируем картинки, логотипы, реалистичные фото. И он бесплатный!!! И у людей пальцы на месте )))
Началось всё с того, что мне прислали ссылку на видео. Интерфейс очень даже френдли. Результат мега-качественный. Видео рекомендуемо к просмотру, так как там инструкция по неочевидным функциям.
Я мгновенно зарегился и залип часа на 3. С трудом оторвался, ибо дела. Очень крутая штука.
Олег, спасибо за наводку )))
Попробовать...
🔥4👍1
Динамические массивы
К сожалению, ссылка на статью в этом посте больше недоступна (((
Поэтому, исправляюсь. Статьи на ту же тему от Gun-Smoker:
- Работа с указателями (перевод)
- Параметры типа открытый массив и "array of const"
И пара ссылок по теме:
- Конспект: Динамический массив в Delphi
- Как определить количество ссылок на динамический массив?
К сожалению, ссылка на статью в этом посте больше недоступна (((
Поэтому, исправляюсь. Статьи на ту же тему от Gun-Smoker:
- Работа с указателями (перевод)
- Параметры типа открытый массив и "array of const"
И пара ссылок по теме:
- Конспект: Динамический массив в Delphi
- Как определить количество ссылок на динамический массив?
🔥7
Спиральное заполнение матрицы
Волею судеб, прилетела задачка:
Дано нечетное число N. Заполнить квадратную матрицу размером N*N следующим образом:
01 - 02 - 03 - 04 - 05
16 - 17 - 18 - 19 - 06
15 - 24 - 25 - 20 - 07
14 - 23 - 22 - 21 - 08
13 - 12 - 11 - 10 - 09
Если расширить на любое количество столбцов и строк, то мне видится вот так (рекурсивно):
Волею судеб, прилетела задачка:
Дано нечетное число N. Заполнить квадратную матрицу размером N*N следующим образом:
01 - 02 - 03 - 04 - 05
16 - 17 - 18 - 19 - 06
15 - 24 - 25 - 20 - 07
14 - 23 - 22 - 21 - 08
13 - 12 - 11 - 10 - 09
Если расширить на любое количество столбцов и строк, то мне видится вот так (рекурсивно):
type
TIntegerDynMatrix =
array of TIntegerDynArray;
Int = Integer;
TIntHelper = record helper for Int
function NextValue: Integer;
end;
function TIntHelper.NextValue: Integer;
begin
Inc(Self);
Result := Self;
end;
procedure CalcMatrix(
Start, R, C, Row, Col: Integer;
var A: TIntegerDynMatrix);
var i, dc, dr: Integer;
begin
if (C>=Col) or (R>=Row) then exit;
if Row-1>R then dc:=2 else dc:=1;
if Col-1>C then dr:=2 else dr:=1;
for i:=C to Col-dc do
A[R,i]:=Int(Start).NextValue;
if (dr=2) or (dc=2) then
for i:=R to Row-dr do
A[i,Col-1]:=Int(Start).NextValue;
if dc=2 then
for i:=Col-1 downto C+1 do
A[Row-1,i]:=Int(Start).NextValue;
if dr=2 then
for i:=Row-1 downto R+1 do
A[i,C]:=Int(Start).NextValue;
CalcMatrix(Start,
R+1,C+1,Row-1,Col-1,A);
end;
delphisources.ru
6 простых задач - [ "Начинающим" ] - Все о Delphi - Форум по Delphi программированию
6 простых задач [ "Начинающим" ]
🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
Визуализация спирального заполнения матрицы
Конечно, руки чесались сделать визуализатор для поста выше.
Всё по честному, отрисовка вызывается при вставке каждого нового значения в матрицу. То есть можно глазами увидеть весь процесс изнутри. Алгоритм тот же, но без хелпера.
Исходник (61 Кб) Delphi XE7
Прога (1.09 Мб) Прога под 64 бита. В 32-х Касперский снова начал параноить.
Конечно, руки чесались сделать визуализатор для поста выше.
Всё по честному, отрисовка вызывается при вставке каждого нового значения в матрицу. То есть можно глазами увидеть весь процесс изнутри. Алгоритм тот же, но без хелпера.
Исходник (61 Кб) Delphi XE7
Прога (1.09 Мб) Прога под 64 бита. В 32-х Касперский снова начал параноить.
🔥7