Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.06.2010, 17:47   #21
ex.cluz
Участник клуба
 
Аватар для ex.cluz
 
Регистрация: 15.01.2010
Сообщений: 1,325
По умолчанию

ВСЕ! ПОНЯЛ ИДЕЮ (ваш рисунок).
Первое, что пришло на ум - тупо вокруг точки рисовать окружности с все более увеличивающимся диаметром (рисовать только контур окружности). Но возникает проблема определения координаты каждой нарисованной точки для того, чтобы узнать, можно ли именно в этой точке рисовать (не перекрывает ли она "запрещенную" область).
Тут подумать надо...как только придумаю, так отпишусь.

Рисоваться будет по щелчку мыши в определенной области?


Добавлено позже.
Идея есть, но кривая. При щелчке (это же при нем будут определяться координаты точки?) создаем что-то типа маски (2 мерную матрицу с размерами, как у картинки, заполненную нулями), и начинаем двигаться от этой точки, например, влево. Как только упремся в пиксель с цветом, отличным от цвета первоначального (определенного при щелчке), так записываем в матрицу единицы используя индексы, равные координатам. Далее пробуем поднятся на 1 пиксель вверх и проверяем их цвет. Таким образом (обойдя последовательно все 4 плоскости, которые получаются при проведении начала отсчета координат через точку-начало отсчета) у нас остануться только единицы, которые примыкают к точке щелчка.
Так у нас будет матрица, в которой будут единицы только там, где можно закрашивать.

Как идейка?
Я тоже думаю, что бредовая
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "
[ПРОграммист]"
Yan's Home Digital Lab

Последний раз редактировалось ex.cluz; 24.06.2010 в 18:16.
ex.cluz вне форума Ответить с цитированием
Старый 24.06.2010, 18:00   #22
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
Лампочка

Цитата:
Причем здесь "вручную"? В dll делаю функцию Fill.
Ну это-то понятно... Под "вручную" имелось ввиду работа с писелями в памяти...
Не уверен что в данном случае удастся обогнать MicroSoft (FloodFill)... Хотя как раз будет интересно сравнить...
Цитата:
Рисоваться будет по щелчку мыши в определенной области?
По вызову функции...
Цитата:
В API работа с градиентной заливкой есть?
Ну... Изначально спрашивалось про просто заливку... И что было бы неплохо - с градиентом...
С градиентом вроде есть GradientFill... Только оно немного не так как задумано... И вроде в GDI+ что-то было похожее...


Алгоритм простого заполнения вроде есть у меня... Надо тока найти.....
* ушёл искать *


P.S.
Цитата:
Как идейка?
Довольно похоже на алгоритм что я ищу.....
I am the First of Cyber Evolution...
I am the First to Program your Future...

Последний раз редактировалось DomiNick; 24.06.2010 в 18:23. Причина: P.S.
DomiNick вне форума Ответить с цитированием
Старый 24.06.2010, 18:32   #23
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

А если так:
Делаем матрицу [A] размером с рисунок. Далее, начиная с точки, где у нас задано начало рисуем (не на рисунке, а в матрице) "градиент":
Код:
0 0 0 0 0 0 0 0 0
0 0 0 0 0 1 0 0 0
0 0 0 0 1 2 1 0 0
0 0 0 1 2 3 2 1 0
0 0 1 2 3 4 3 2 1
0 1 2 3 4 5 4 3 2
0 0 1 2 3 4 3 2 1
0 0 0 1 2 3 2 1 0
0 0 0 0 1 2 1 0 0
Причем можно для этих целей попробовать заюзать матрицу Гаусса. Затем проходим по рисунку (рекурсия?) и точки, не закрашиваемые в матрице [1] вычеркиваем.

Красим рисунок согласно градиенту по матрице [1].

В случае одного цвета градиент = Нач.цвет - нач.цвет.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 24.06.2010, 18:51   #24
ex.cluz
Участник клуба
 
Аватар для ex.cluz
 
Регистрация: 15.01.2010
Сообщений: 1,325
По умолчанию

А до какого предела будет рисоваться градиент?
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "
[ПРОграммист]"
Yan's Home Digital Lab
ex.cluz вне форума Ответить с цитированием
Старый 25.06.2010, 01:31   #25
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

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

Линейный градиент сделать из такой заливки не проблема, т.к. она построчная, но два прохода все равно нужно делать, если полностью сверху вниз нужен градиент, а если от затравочной точки вверх и вниз, то можно и одним проходом обойтись. Круговой нужно как-то иначе делать. Например ткнули по фигуре, запоминаем точку, от нее делаем построчную заливку в памяти для определения границ, попутно заполняем матрицу (размером покрывающую фигуру), потом рисуем градиентные круги из центра, не с помощью АПИ какого-то, а с помощью синуса попиксельно, и в матрице смотрим можно конкретный пиксель выводить или нет. Не знаю хороший это способ или нет, только что придумал.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось mutabor; 25.06.2010 в 01:34.
mutabor вне форума Ответить с цитированием
Старый 25.06.2010, 01:35   #26
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

А можно поподробней насчет алгоритмов с затравкой?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 25.06.2010, 01:41   #27
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
Сообщение от Alex Cones Посмотреть сообщение
А можно поподробней насчет алгоритмов с затравкой?
Я делал по этой лекции http://ermak.cs.nstu.ru/kg_rivs/graf05.htm, самый нижний алгоритм.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 25.06.2010, 01:43   #28
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

А если строка отличается не на один пиксель? Алго работает?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 25.06.2010, 01:49   #29
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
Сообщение от Alex Cones Посмотреть сообщение
А если строка отличается не на один пиксель? Алго работает?
Поясни, не понял.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 25.06.2010, 01:52   #30
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
при перемещении к следующей строке размер заливаемой строки скорее всего или неизменен или меняется на 1 пиксел
Цитата:
В диапазоне от Xлев до Xправ в выше и нижележащей строке
Эти моменты мне не совсем ясны.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка открытия базы в ограниченной учетной записи! sashahttp БД в Delphi 6 08.04.2010 08:53
Не работает под ограниченной учетной записью! sashahttp Софт 7 05.04.2010 08:22
Работа программы с БД с ограниченной учетной записью пользователя Windows Стас БД в Delphi 3 11.12.2009 14:35
Ошибка при вводе данных с ограниченной структурой pav-pas БД в Delphi 4 17.07.2009 16:53