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
Лечим AutoCAD
Проблема:
В кои века понадобился AutoCAD. Открываю в нём файл и вижу постоянно выскакивающую фигню, которая на рисунке. Что-либо делать невозможно.
Сломался!
Лечение:
Идём в C:\Windows\System32\drivers\etc\
Открываем любым редактором файл hosts.
Добавляем:
Сохраняем. Запускаем AutoCAD.
Починился!
Подсмотрено:
Используемая лицензия AutoCAD недействительна. Autodesk массово заблокировала пиратские инсталляции
Проблема:
В кои века понадобился AutoCAD. Открываю в нём файл и вижу постоянно выскакивающую фигню, которая на рисунке. Что-либо делать невозможно.
Сломался!
Лечение:
Идём в C:\Windows\System32\drivers\etc\
Открываем любым редактором файл hosts.
Добавляем:
127.0.0.1 ase.autodesk.com
127.0.0.1 ase-cdn-stg.autodesk.com
127.0.0.1 genuine-software2.autodesk.com
Сохраняем. Запускаем AutoCAD.
Починился!
Подсмотрено:
Используемая лицензия AutoCAD недействительна. Autodesk массово заблокировала пиратские инсталляции
🔥4👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Direct2D: Эффект точечного рассеяния освещения
Этот эффект использует альфа-канал в качестве карты высоты и освещает изображение точечным источником света.
Внутри эффекта есть много интересных параметров, эффект непростой.
Описание эффекта.
В проге:
Z - высота источника свет.
No Effects - если поставить галку, покажет изображение, на котором всё строится.
Курсор мыши - точечный источник света. Если хотите переместить источник освещения за пределы окна, делайте это с нажатой левой кнопкой мыши. Если снять галку с Free Mouse, источник света будет двигаться только с зажатой левой кнопкой мыши.
По правой кнопке можно вставить любую картинку.
Исходники картинок: minimalism, trust your instincts, who are you.
Исходник (418 Кб) Delphi XE7
Прога (1.28 Мб)
Этот эффект использует альфа-канал в качестве карты высоты и освещает изображение точечным источником света.
Внутри эффекта есть много интересных параметров, эффект непростой.
Описание эффекта.
В проге:
Z - высота источника свет.
No Effects - если поставить галку, покажет изображение, на котором всё строится.
Курсор мыши - точечный источник света. Если хотите переместить источник освещения за пределы окна, делайте это с нажатой левой кнопкой мыши. Если снять галку с Free Mouse, источник света будет двигаться только с зажатой левой кнопкой мыши.
По правой кнопке можно вставить любую картинку.
Исходники картинок: minimalism, trust your instincts, who are you.
Исходник (418 Кб) Delphi XE7
Прога (1.28 Мб)
🔥10👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Direct2D: Эффект точечного освещения с сохранением цвета
Тот же самый эффект, что в предыдущем посте, но с сохранением цветов исходного изображения.
Как видно, картинка становится как будто трехмерной для освещения.
Исходник (1.32 Мб) Delphi XE7
Прога (2.06 Мб)
Тот же самый эффект, что в предыдущем посте, но с сохранением цветов исходного изображения.
Как видно, картинка становится как будто трехмерной для освещения.
Исходник (1.32 Мб) Delphi XE7
Прога (2.06 Мб)
🔥8👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Создаём и рисуем молнию. GDI+
Давно хотел смастерить удар молнии. Хотелось сделать что-то апокалиптическое, с нависающими тучами, чтобы вспышками из предыдущих постов освещало небо. Но пообщавшись с человеческим дитёнышем, решил, что обо мрачном как-нибудь потом.
Идея подчерпнута тут: https://drilian.com/2009/02/25/lightning-bolts/
Исходник (188 Кб) Delphi XE7
Прога (1.07 Мб)
За синюю-красную точки можно таскать. Если поставить галку на Timer, генерация молний будет производиться всё время. Увеличивая Count, увеличиваем тем самым максимально возможное количество молний. Draw As Curve - молнии приобретут плавные изгибы.
Давно хотел смастерить удар молнии. Хотелось сделать что-то апокалиптическое, с нависающими тучами, чтобы вспышками из предыдущих постов освещало небо. Но пообщавшись с человеческим дитёнышем, решил, что обо мрачном как-нибудь потом.
Идея подчерпнута тут: https://drilian.com/2009/02/25/lightning-bolts/
Исходник (188 Кб) Delphi XE7
Прога (1.07 Мб)
За синюю-красную точки можно таскать. Если поставить галку на Timer, генерация молний будет производиться всё время. Увеличивая Count, увеличиваем тем самым максимально возможное количество молний. Draw As Curve - молнии приобретут плавные изгибы.
🔥11
Привет всем!
Давайте, может, расширим возможности общения? Частично переберёмся в группу? А то меня спрашивают в частном порядке, предлагают ответ опубликовать, а истории вопроса не видно. Размер поста ограничен, а так может польза будет.
Появляется возможность задавать вопросы друг другу, делиться открытиями и достижениями )))
https://t.me/+po6LipjFma85MWQy
Давайте, может, расширим возможности общения? Частично переберёмся в группу? А то меня спрашивают в частном порядке, предлагают ответ опубликовать, а истории вопроса не видно. Размер поста ограничен, а так может польза будет.
Появляется возможность задавать вопросы друг другу, делиться открытиями и достижениями )))
https://t.me/+po6LipjFma85MWQy
Telegram
IP76.RU Chat
IP76.RU Chat: Графика. Математика. Delphi.
🔥6
IP76.RU Графика. Математика. Delphi. pinned «Привет всем! Давайте, может, расширим возможности общения? Частично переберёмся в группу? А то меня спрашивают в частном порядке, предлагают ответ опубликовать, а истории вопроса не видно. Размер поста ограничен, а так может польза будет. Появляется возможность…»
Друзья, всем привет!
Хочу познакомить с любопытным каналом:
https://t.me/x117_lab_geom
Основная тематика - геометрия, используемый язык программирования - Python. Уже зацепился за одну задачу, решил по своему. Когда-нибудь, может быть, сделаю статью.
Хочу познакомить с любопытным каналом:
https://t.me/x117_lab_geom
Основная тематика - геометрия, используемый язык программирования - Python. Уже зацепился за одну задачу, решил по своему. Когда-нибудь, может быть, сделаю статью.
Telegram
X117 | DIY Geometry Lab
Вычислительная геометрия и программирование для решения задач 3d-моделирования и инженерного дизайна. Авторский канал Данила Близнеца (@danil_bliznets). Чат с комментариями и обсуждениями: https://t.me/diy_geometry_comments.
👍2👌1
Трюки с формой 2.1: Edit в заголовке окна
Не являюсь поклонником запихнуть что-нибудь в заголовок, но аргумент «жаль столько места пропадает» принимаю и поддерживаю. Поэтому статья про то, как разместить компоненты в заголовке, не теряя AeroSnap, не имитируя заголовок панелью, не подменяя системных кнопок окна.
Работает на Windows 10 и выше.
Исходники Delphi XE7, XE12
Читать тут...
Не являюсь поклонником запихнуть что-нибудь в заголовок, но аргумент «жаль столько места пропадает» принимаю и поддерживаю. Поэтому статья про то, как разместить компоненты в заголовке, не теряя AeroSnap, не имитируя заголовок панелью, не подменяя системных кнопок окна.
Работает на Windows 10 и выше.
Исходники Delphi XE7, XE12
Читать тут...
🔥10👍5
This media is not supported in your browser
VIEW IN TELEGRAM
Тёмная тема Windows в Delphi
С возникновением тёмной темы Windows, появились вопросы, почему Delphi её не поддерживает. Вне зависимости от текущей темы, окошки серые, заголовки белые. Давайте попробуем разобраться, что такое тёмное тема в понимании Windows, и как её реализовать в Delphi малыми усилиями.
Трюки с формой 2.2.1: Тёмная тема Windows в Delphi 12
Трюки с формой 2.2.2: Тёмная тема Windows в Delphi XE7
С возникновением тёмной темы Windows, появились вопросы, почему Delphi её не поддерживает. Вне зависимости от текущей темы, окошки серые, заголовки белые. Давайте попробуем разобраться, что такое тёмное тема в понимании Windows, и как её реализовать в Delphi малыми усилиями.
Трюки с формой 2.2.1: Тёмная тема Windows в Delphi 12
Трюки с формой 2.2.2: Тёмная тема Windows в Delphi XE7
🔥4👍2