IIP76.RU Графика. Математика. Delphi.

IP76.RU Графика. Математика. Delphi.

@ip76ru✍️ Блоги🇷🇺 Русский📅 март 2026 г.

Алгоритмы, исходники, теория, GDI, GDI+, D2D

📊 Полная статистика📝 Все посты
##39#geom_code
102
Подписчики
133,65
Ср. охват
131%
Вовлечённость
20
Постов
~0.2
В день

Графики

📊 Средний охват постов

📉 ERR % по дням

📋 Публикации по дням

📎 Типы контента

Лучшие публикации

20 из 20
Iip76ru
ip76ru
13 янв., 19:07

Лечим смещение на полпикселя в GDI+ Проблема Есть такая проблема, что GDI+ считает координату (0,0) центром пикселя, а не его углом. Смотрим правый рисунок - узлы сетки ровно в середине пикселя. Последствия (центральный рисунок): - Смещение на полпикселя - изображение сдвинуто относительно GDI и D2D; - Размытие линий - горизонтальная линия толщиной 1px в точке y=0 размывается на два ряда пикселей (по 50%); - Несовпадение координат - прямоугольник (0,0,100,100) в GDI+ занимает другую область, чем...

👁 191📷 photo
Iip76ru
ip76ru
11 янв., 17:31

Получить TBitmap из любого TGraphic с масштабированием Иногда надо получить Bitmap из какого-либо графического формата для последующей обработки, анализа и прочего. Но порой попадается такое здоровенное изображение, что работать с ним становится мучительно больно из-за вполне предсказуемых тормозов. Хочется битмап поменьше, но без потери качества и прозрачности. Ниже можно скачать небольшой модуль. Там пока три функции. Основная задача: либо просто конвертируют TGraphic в TBitmap, либо масштабир...

👁 162📷 photo
Iip76ru
ip76ru
2 янв., 12:18

Убираем фон в один клик Сделал новый инструмент в копилку. Загружаем картинку из файла или буфера обмена, жмём кнопку "Убрать фон". Думать будет долго, но почти всегда результат будет хорошим. Сохраняет в заказанном формате (JPEG, PNG, WebP) и в размерах оригинала. Алгоритм убирания фона не мой, этот: @imgly/background-removal. Попробовать убрать фон...

👁 161📷 photo
Iip76ru
ip76ru
27 дек., 19:58

Эффект стекла: Как смешивать Direct2D эффекты Пример микса D2D-эффектов: D2D1GaussianBlur + D2D1Brightness [+ D2D1Tile + D2D1ColorMatrix + D2D1Blend]. В обойме эффектов D2D шума нет (если не считать Перлина). Поэтому здесь присутствует два вида шума: рукописный (на битмапах и ScanLine'ах) и с помощью дополнительного микса эффектов D2D (которые в квадратных скобках). - NoiseD2D переключает режимы; - Ползунок рядом регулирует шум. Исходник (294 Кб) Delphi XE7 Прога (x64) (1.5 Мб)

👁 152📷 photo
Iip76ru
ip76ru
6 янв., 18:50

Сохранить битмап в формате png, jpg, gif, bmp Каким бы образом мы не получили изображение, внутри программы работаем только с битмап. Но бывает нужно сохранять результат. И как-то глупо сохранять его всегда в bmp. Альтернативное и простое решение, без использования TGraphicClass - через TWICImage. Работают встроенные конверторы Windows. Если для битмапа указано: PixelFormat = pf32bit и AlphaFormat <> afIgnored то в PNG будет экспортироваться сразу с прозрачностью procedure SaveBitmapAs(Bitmap: T...

👁 151📷 photo
Iip76ru
ip76ru
31 дек., 10:59

Друзья! С Новым 0x07EA годом! Пусть ваши баги будут тривиальными, а тикеты — закрытыми. Желаю нулевых AV на продакшне и своевременного Free для объектов. Пусть красота begin..end не перестаёт радовать глаз, а RAD означал «Реально Адекватный Дедлайн», а не «Ручная Адская Доработка». И пусть Delphi работает стабильнее, чем ваша любовь к Ctrl+Space!

👁 151📷 photo
Iip76ru
ip76ru
15 февр., 06:33

TBitmap.ScanLine: Полное руководство Три способа работы с пикселями — от классического до быстрого и кэшированного. Четыре формата (pf1bit, pf8bit, pf24bit, pf32bit), шаблоны навигации по памяти, padding, bottom-up, типичные ошибки. Каждый пример — самодостаточная процедура, бери и используй. Внутри: бенчмарк, демо-приложение, исходники. Запланированное продолжение темы, поднятой 3 года назад. Планировалось две статьи подряд: TBitmap.PixelFormat и эта. Закрываю ментальный долг ))) Статья...

👁 150📷 photo
Iip76ru
ip76ru
5 янв., 17:18

Избавляемся от фокусной рамки Иногда очень хочется избавиться от примитивной фокусной рамки на контроле. В некоторых случаях может помочь: function RecreateControlRgn( const AControl: TWinControl; const AMargin: TRect; const ARGN: NativeInt): NativeInt; var rct: TRect; begin if ARGN <> 0 then DeleteObject(ARGN); rct := AControl.ClientRect; rct.TopLeft := rct.TopLeft + AMargin.TopLeft; rct.BottomRight := rct.BottomRight - AMargin.BottomRight; Result := CreateRectRgn(rct.Left, rct.Top, rct.Right, ...

👁 148📷 photo
Iip76ru
ip76ru
6 февр., 16:40

Кастомная отрисовка TrackBar'ов Недавно возник вопрос, как можно нарисовать TrackBar по своему усмотрению. Один из способов (не единственный) - это кастомная отрисовка через перехват CN_NOTIFY/WM_NOTIFY. Использовал класс ThlTrackBar. Правда, немного его допилил. Как рисовать - смотрим в главном модуле метод TrackBarCustomDraw. Отрисовка определённого стиля осуществляется набором из двух процедур: Draw<Style>Track и Draw<Style>Thumb. Шаблон промта для Claude 4.5 Opus (txt) Исходник (79 Кб) Delph...

👁 145🎬 video
Iip76ru
ip76ru
4 янв., 16:28

Сделать цвет темнее или светлее Мега полезные функции. Рекомендую: function Darker(Color: TColor; Percent: Byte): TColor; var r, g, b: Byte; begin r := GetRValue(Color); g := GetGValue(Color); b := GetBValue(Color); r := r-muldiv(r, Percent, 100); g := g-muldiv(g, Percent, 100); b := b-muldiv(b, Percent, 100); Result := RGB(r, g, b); end; function Lighter(Color: TColor; Percent: Byte):TColor; var r, g, b: Byte; begin r := GetRValue(Color); g := GetGValue(Color); b := GetBValue(Color); r := r+mul...

👁 140📷 photo

Типы хуков

Нейтральный19 | 133 просм.
Статистика1 | 151 просм.

Длина постов

Длинные (500-1000)13 | 125 просм.
Средние (200-500)5 | 141 просм.
Очень длинные (1000+)2 | 171 просм.

Типы контента

🎬
1
video
145 просм.
📷
19
photo
133 просм.
IP76.RU Графика. Математика. Delphi. (@ip76ru) — Telegram-канал | PostSniper