![]() |
|
Модераторы: gambit, Kefir, Partizan |
![]()
|
|
| NightBlaze |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 23.3.2008 Репутация: нет Всего: нет |
Имеем горизонтальный градиент.
При таком градиенте и офсете равном 0.5 мы имеем серый цвет (R=125, G=125, B=125). Вопрос: как мне получить цвет заливки в заданной точке, зная офсет? Или можно как-то это реализовать не через LinearGradientBrush? Интересует реализация на SL3 или SL2. |
|||
|
||||
| -Mikle- |
|
||||||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 13 Всего: 59 |
нет 127.5, 127.5, 127.5 [по сабжу] Значение цвета градиента в позиции легко узнать и без рисования градиента где-либо. Для серого градиента от чисто белого до чисто черного, формула будет проста. Если офсет задается в интервале от 0 до 1, то очень просто:
Если офсет задается в X-координате твоего Rectangle, то тоже просто:
Для любого двухцветного градиента, расчитать тоже не сложнее. Для многоцветного будет, тоже что и для двухцветного, только с пересчетом офсета в офсет между двумя цветами. Если нужен будет пример, пиши чего конкретно. -------------------- Если тебе плюют в спину, значит ты впереди... |
||||||
|
|||||||
| NightBlaze |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 23.3.2008 Репутация: нет Всего: нет |
-Mikle-,
Да. Ступил чуть-чуть
Я примерно так и придумал. Единственно, чтобы каждый раз не вычислять, то прохожусь по градиенту с шагом 0.01 (для меня приемлимая точность), определяю цвет и записываю его в массив. |
|||
|
||||
| -Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 13 Всего: 59 |
гы... вычисление против использования памяти? это вычисление выполняется даже чуть быстрее, чем доступ к элементу массива длинной в 100 единиц. При том, что чистая длина массива одной сотни структур Color будет равна 2400 байт. Стоит ли? Решать конечно тебе... -------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
| NightBlaze |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 23.3.2008 Репутация: нет Всего: нет |
У меня не переход от белого к черному. Градиент может иметь сколько угодно GradientStops. Соответственно там не просто просчет по одной этой формуле, а чуть сложнее.
Спс. Не знал. Сделаю какой-нибудь тест потом, проверю что быстрее будет. |
|||
|
||||
| -Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 13 Всего: 59 |
Ну, дело твое. В принципе не так критична эта разница.
На моем компе 1 млрд. вычислений ~12 сек., а доступа к 50-ому элементу в массиве из 100 равен ~15 сек. -------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | WPF и Silverlight | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |