Годовой архив: 2023

Алгоритм Рамера–Дугласа–Пойкера

Отличная штука при векторизации растра. Мы нашли контур ромба, но он содержит тысячу точек. Хотя там должно быть всего четыре точки. Четыре, Карл! Вот для того, чтобы точек стало четыре, и может пригодиться алгоритм Рамера–Дугласа–Пойкера.

TBitmap.PixelFormat

PixelFormat

Формат пикселя (TBitmap.PixelFormat) влияет на способ хранения информации о цвете. Подразумевалась небольшая справочная статья, но материала оказалось неожиданно много, что незаметная статья из глубин сайта выросла до целой записи на главную страницу.

Kd-Tree. Быстрый поиск в K-мерном пространстве

Rd-Tree

Если есть гигантский массив данных, то неизбежно встаёт вопрос о быстром поиске данных в нём. Очевидно, что надо строить дерево поиска. Существует множество разновидностей подобных деревьев. Для K-мерных величин, например, 2D или 3D координат, неплохим решением является Kd-Tree.

Контур текста в GDI с антиалиасом

GDI Text Contour

Контур текста довольно полезная штука. Не только в праздничном оформлении, но и во вполне деловой практике. Оконтуренный текст достаточно просто получить в GDI+ и, прямо скажем, совсем не просто в D2D. Однако, как быть в старом добром GDI?

Пользовательский стиль пера. Часть II: Бегущие муравьи

Это продолжение разговора, начатого в первой части, про эффект рамки «бегущие муравьи». Было также сказано, что лучше этого не делать в GDI. Поэтому сейчас сделаем бегущих муравьёв в GDI и GDI+, и сравним.

Пользовательский стиль пера. Часть I: GDI

В прошлой статье я наотрез отказался рассматривать два последних параметра в функции ExtCreatePen, отвечающих за пользовательский стиль пера. Хотя упоминал про ГОСТы и прочую формальность. Давайте теперь рассмотрим их.

Жирная пунктирная линия в Delphi.Canvas

Жирная пунктирная линия в Delphi.Canvas

Всем известно, что в стандартном Canvas средствами Delphi нарисовать пунктирную линию, толщиной больше единицы, невозможно. На самом деле возможно. Просто надо добавить самую малость GDI API.