Killers are quiet....
Возникла проблема: надо сделать в Делфи инструмент "палец" (smudge tool).. выглядит он так:











Если кто знает, пожалуйста помогите!!! Не надо писать код, просто кратко обьясните принцип! Как это делается?



Заранее спасибо! :)

Комментарии
18.06.2007 в 00:16

Мало ли что эволюция, - приговаривал мастодонт, топча неандертальцев.
Нужно будет поработать с DirectDraw или ему подобными.

Накладываете картинку на сетку разбитую на клетки к примеру 5х5 пикселей, ну или 2х2 для большей точности, получаете практически матрицу.

В теории вы получаете координаты мыши и при нажатии на кнопку мыши вы смещаете точки находящиеся в данной клетке в другую клетку, к координатам которой вы ведёте мышь.

Итого нам понадобятся:



Функция отрисовывающая сетку.

Функция отрисовывающая картинку.

Функция сопоставялющая координаты мыши с координатами клеток.

Функция переносящая точки из одной клетки в другую.



З.Ы. данная логика применима в том случае, если картинка отрисовывается попиксельно, а не линиями.
18.06.2007 в 18:04

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



Здесь можно скачать примеры работы с DirectDraw, пускай достаточно старые, но рабочие.
23.06.2007 в 02:42

Killers are quiet....
motoku дело в том, что это курсовая работа по информатике и её нужно было сделать без использования DirectX :)



Но! Вы указали принцип и конкретное направление работы!! В результате я разобрался и сделал эту программу!! Конечно она не идеальна, т.к. работает с обычным Canvas'ом, вследствие чего есть определённые ограничения.. но тем не менее, она работает!!



За помощь - огромнейшее спасибо!!!!!!!!!!!!! :)



P.S. Пожалуй, останусь в этом сообществе.. оно скромное, но уютное :)
24.06.2007 в 21:30

Мало ли что эволюция, - приговаривал мастодонт, топча неандертальцев.
Рад, что мои соображения пригодились.

Обращайтесь)