![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#21 |
Участник клуба
Регистрация: 15.01.2010
Сообщений: 1,325
|
![]()
ВСЕ! ПОНЯЛ ИДЕЮ (ваш рисунок).
Первое, что пришло на ум - тупо вокруг точки рисовать окружности с все более увеличивающимся диаметром (рисовать только контур окружности). Но возникает проблема определения координаты каждой нарисованной точки для того, чтобы узнать, можно ли именно в этой точке рисовать (не перекрывает ли она "запрещенную" область). Тут подумать надо...как только придумаю, так отпишусь. Рисоваться будет по щелчку мыши в определенной области? Добавлено позже. Идея есть, но кривая. При щелчке (это же при нем будут определяться координаты точки?) создаем что-то типа маски (2 мерную матрицу с размерами, как у картинки, заполненную нулями), и начинаем двигаться от этой точки, например, влево. Как только упремся в пиксель с цветом, отличным от цвета первоначального (определенного при щелчке), так записываем в матрицу единицы используя индексы, равные координатам. Далее пробуем поднятся на 1 пиксель вверх и проверяем их цвет. Таким образом (обойдя последовательно все 4 плоскости, которые получаются при проведении начала отсчета координат через точку-начало отсчета) у нас остануться только единицы, которые примыкают к точке щелчка. Так у нас будет матрица, в которой будут единицы только там, где можно закрашивать. Как идейка? Я тоже думаю, что бредовая ![]()
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "[ПРОграммист]" Yan's Home Digital Lab Последний раз редактировалось ex.cluz; 24.06.2010 в 18:16. |
![]() |
![]() |
![]() |
#22 | ||||
Студент, не
Старожил
Регистрация: 29.01.2009
Сообщений: 2,067
|
![]() Цитата:
![]() Не уверен что в данном случае удастся обогнать MicroSoft (FloodFill)... Хотя как раз будет интересно сравнить... ![]() Цитата:
![]() Цитата:
![]() С градиентом вроде есть 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. |
||||
![]() |
![]() |
![]() |
#23 |
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
![]()
А если так:
Делаем матрицу [A] размером с рисунок. Далее, начиная с точки, где у нас задано начало рисуем (не на рисунке, а в матрице) "градиент": Код:
Красим рисунок согласно градиенту по матрице [1]. В случае одного цвета градиент = Нач.цвет - нач.цвет.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
![]() |
![]() |
![]() |
#24 |
Участник клуба
Регистрация: 15.01.2010
Сообщений: 1,325
|
![]()
А до какого предела будет рисоваться градиент?
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "[ПРОграммист]" Yan's Home Digital Lab |
![]() |
![]() |
![]() |
#25 |
Телепат с дипломом
Старожил
Регистрация: 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. |
![]() |
![]() |
![]() |
#26 |
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
![]()
А можно поподробней насчет алгоритмов с затравкой?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
![]() |
![]() |
![]() |
#27 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
![]()
Я делал по этой лекции 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)
Проверь себя! Онлайн тестирование | Мой блог |
![]() |
![]() |
![]() |
#28 |
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
![]()
А если строка отличается не на один пиксель? Алго работает?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
![]() |
![]() |
![]() |
#29 |
Телепат с дипломом
Старожил
Регистрация: 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)
Проверь себя! Онлайн тестирование | Мой блог |
![]() |
![]() |
![]() |
#30 | ||
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
![]() Цитата:
Цитата:
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
||
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ошибка открытия базы в ограниченной учетной записи! | 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 |