IP76.RU Графика. Математика. Delphi.
103 subscribers
101 photos
2 files
151 links
Алгоритмы, исходники, теория, GDI, GDI+, D2D
Download Telegram
Direct2D. ColorMatrix. Цветовая матрица

ColorMatrix — это мощный инструмент для работы с растровым изображением. С помощью матрицы можно удалять, комбинировать, менять местами цветовые каналы изображения. Можно вращать цветовой вектор. Многие эффекты являются просто частным случаем цветовой матрицы. Одним словом, ColorMatrix — это сила.

https://ip76.ru/direct2d-colormatrix/
🔥1
Direct2D. Эффект Saturation. Насыщенность

Насыщенность — это второй важный параметр в теории цвета, наравне с яркостью. Определяет степень отличия чистого хроматического цвета от аналогичного ему по яркости ахроматического цвета. Ахроматический цвет — это оттенки серого, который мы получили в предыдущей статье.

https://ip76.ru/direct2d-saturation/
👍1🔥1
Обновился VTV, обновился исходник https://ip76.ru/vtv-footers/#Versia_1
🔥1
Как вставить изображение из буфера обмена

Необходимость вставки изображения из буфера обмена в приложении, связанного с графикой, возникает всегда. По этому поводу небольшой пост и очень простой способ.

Этим постом открываю рубрику "Коротыши". Планирую писать сюда всякие мелкие полезняшки. В меню сайта пока не вывожу, думаю использовать в качестве поясняющего материала к статьям.

Читать полностью...🔗➡️
🔥1
Как повернуть изображение. GDI, GDI+, Direct2D, JavaScript

Как повернуть изображение? Это один самых популярных запросов к сайту. Согласен, что статья о теории аффинных преобразований больше заточена под объяснение коэффициентов матриц преобразований, почему они такие. Поэтому, исправляю ситуацию и отвечаю на вопрос.

https://ip76.ru/rotate-image-practice/
👍1🔥1
Запрет смены фокуса и обработка событий при нажатии стрелок

Бывает так. Пишешь какой-нибудь красочный визуальный CustomControl, и в какой-то момент хочешь добавить реакцию на клавиатурные кнопки влево-вправо-вверх-вниз. Как грамотный человек, переопределяешь методы KeyDown или KeyPress. И тут приходит жесткий облом…
Решить проблему...
🔥1
Вращение прямоугольника вокруг произвольной точки

Аффинные преобразования становятся мегапопулярными на сайте. Но судя по времени, которое тратится на чтение материала по запросу "прямоугольник с известными размерами вращается не вокруг центра как вычислить координаты вершин", ответ найти не получается.

В связи с чем коротыш, посвященный именно этой теме. Конечно, интерактивный. Конечно, с калькулятором )))

Читать полностью...
🔥1
Как сделать истинное черно-белое изображение

Перефразирую - как быстро сделать black-white binary map.
Думал, что будет про OpenCV, но что-то и так много получилось. Поэтому, в следующий раз.
В основном, про скорость работы с обычным TBitmap.
Видимо, миссия моя такая, убеждать в том, что все уже есть, не надо искать чего-то экстраординарно-быстрого. Надо грамотно пользовать в коробке даденое.

Одним словом, вот ссылка. Буду рад комментариям и критике.

https://ip76.ru/black-white-image/
👍1
С НОВЫМ ГОДОМ!
Интересных проектов, сбычи мечт и здоровья!
УРА!
Направить ось Y вверх

По умолчанию, ось Y направлена вниз. Иногда требуется направить ось ординат снизу-вверх. Как правило, перенаправление оси влечет за собой неправильное отображение текста. Нарушается логика определения объектов под курсором. Для исправления ситуации привлекаются аффинные преобразования. Хотя всего этого можно избежать.

Читать как...
👍1
Печать xls(x), doc(x), pdf на указанный принтер

Недавно понадобилось в один свой давнишний проект автоматической печати добавить возможность печати xls(x), doc(x) и pdf. Программа в фоне опрашивает указанные ссылки, и если что-то есть, делает скрины страниц и автоматически выводит на указанный принтер. Теперь люди хотят не только скрины, но и доки, таблицы и прочее.
Понимаю, что не совсем в теме графики, но всякий раз, когда такая необходимость возникает, начинаешь копаться в своих исходниках. Где-то у меня это уже было. Поэтому, зафиксирую тут.
https://ip76.ru/short-stories/print-xlsx-docx-pdf/
👍1
Получить PNG из Bitmap c переносом альфа-канала. И наоборот.

Рассмотрено:
- как получить PNG из Bitmap и перенести альфа-канал;
- как перенести альфа-канал из PNG в Bitmap;
- как получить Bitmap из любого TGraphic с анализом альфа-канала.

https://ip76.ru/png-bmp/
🔥1
Принадлежность точки отрезку. Почему не работает классика?

Простой вопрос вызывает кучу запросов и непониманий, почему классическая формула то работает, то не работает. Запросы "принадлежность точки отрезку" уводят на страницу "Пересечение прямых, угол и координаты пересечения", где рассматривается именно пересечение.
Поэтому предпринял попытку раскрыть решение задачи с формулировкой:
Есть отрезок, заданный точками P1(x1,y1) и P2 (x2,y2). Необходимо определить, принадлежит ли точка P(x,y) этому отрезку.
Также рассмотрел ситуации, когда классическая формула дает сбои.

Читать статью...
🔥1
Как подключить GDI+ для Delphi 7 и не иметь проблем в XE

Собственно, сабж.
Переделаны родные для XE модули GDIPAPI, GDIPOBJ, GDIPUTIL, DirectDraw так, чтобы компилировались в Delphi7. Также переписан GDIPCanvas под Delphi7. Все с примерами.
Исходники компилируются без проблем, и в Delphi7, и в XE7, XE10. Ну, по крайней мере, у меня )))

https://ip76.ru/gdip-for-delphi7/
🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Трюки с формой 01: Без заголовка, с тенью и отзывчивой рамкой

Небольшая статья о том, как убрать заголовок окна, как сделать тень такому окну. Как разрешить менять размер мышкой окну без заголовка и фрейма. Надеюсь, первая в цикле подобных статей. Следующую планирую про заголовок с combobox'ом и прочей фигней, реакцию на системные кнопки и системное меню.

Читать
🔥1
Друзья!
Сделал регистрацию на сайте.
Буду рад видеть в рядах нашего сообщества!

Зарегистрироваться или войти
This media is not supported in your browser
VIEW IN TELEGRAM
Трюки с формой 2.0: ComboBox в заголовке

В статье рассмотрен трюк с помещением панели в не-клиентскую область окна с последующей отрисовкой и переводом non-client сообщений в обычные виндусовые события.
Модифицирован эффект пламени, вынесен в отдельный модуль.
Показано, как можно рисовать на обычном GDI DC:HDC совместно c GDI+.
Компилируется в Delphi 7, XE 7, XE 10, XE 11.
Протестировано на Win 10, 8, 7, XP.

https://ip76.ru/tricks-form-20/
🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Вывести текст в перспективе

Как в Delphi 7, XE 7, 10, 11 нарисовать текст с текстурной заливкой в перспективе без аффинных преобразований и 3D наворотов.
Как растянуть текст, чтобы он полностью влез в заданный четырехугольник.
Простые способы работы с TGPBitmap, TGPFont и TGPFontFamily.

https://ip76.ru/gdip-text-warp/
🔥2
Координаты точки по углу от произвольной прямой и расстоянию

Небольшой очерк о том, как найти координаты точки, отстоящей на некий угол от произвольной прямой на некое расстояние от точки этой прямой.
Рассмотрен обратный процесс, когда нужно найти угол по трем координатам.

https://ip76.ru/short-stories/angle-len-coord/
🔥1