Консультация № 139332
06.06.2008, 15:57
0.00 руб.
0 1 1
Здраствуйте. Меня интересует вопрос как написать задачу на языке делфи: на загруженный рисунок наложить сетку получится 9 блоков, в центре 4 точки(точки пересечения линий). Перетащив любую точку в другие координаты должны в этой области получить растяжение. остальная картинка остаеся прежней. Принцип морфинга изображения, но только тут главное получить это растяжение и все,,, Помогите пожалуйста, очень нужно,,

Обсуждение

Неизвестный
09.06.2008, 10:53
общий
это ответ
Здравствуйте, Беломестнов Олег Владимирович!

Разбиваете картинку на 9 картинок и масштабируете каждую в зависимости от ее целевого прямоугольника.

Если вопрос в том как масштабировать, то простейший вариант (грубый) - StretchBlt. Более совершенные можно поискать в Инете алгоритмы интерполяции (фильтры) - линейный, бикубический (би-сплайны), Белла (Bell), треугольный, Хермита (Hermite), Ланкроза (Lanczos), Митчела (Mitchell).

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

P.S. Если нужна высокая скорость, то кажется у Intel была библиотека примитивов, оптимизированная под процессоры, но там C знать надо, чтобы обертку написать.

P.P.S. Еще в GDI+ были встроены какие-то алгоритмы качественного масштабирования. Но их реально не использовал, про скорость ничего не скажу.
Форма ответа