Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
#1

Нарисовать линию градиентом - Android

05.10.2014, 02:13. Просмотров 937. Ответов 11
Метки нет (Все метки)

Не подскажите, есть ли простой способ для этого?

Нашел один, но это ужас - рисую прямоугольник градиентом и предстоит "подогнать" формулами (синусами) под наклоном между точками...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Max64
19 / 19 / 5
Регистрация: 27.10.2012
Сообщений: 156
05.10.2014, 12:02     Нарисовать линию градиентом #2
Java
1
2
3
Paint p = new Paint();
p.setShader(new LinearGradient(...));
canvas.drawLine(0, 0, 100, 200, paint);
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
05.10.2014, 14:15  [ТС]     Нарисовать линию градиентом #3
Цитата Сообщение от Max64 Посмотреть сообщение
Paint p = new Paint();
p.setShader(new LinearGradient(...));
canvas.drawLine(0, 0, 100, 200, paint);
А можте заполнить (...)? Согласно примерам я получил только полностью закрашеный грдиентом экран.
Max64
19 / 19 / 5
Регистрация: 27.10.2012
Сообщений: 156
05.10.2014, 14:21     Нарисовать линию градиентом #4
попробуйте так
Java
1
new LinearGradient(0, 0, 0, getHeight(), Color.BLACK, Color.WHITE, Shader.TileMode.MIRROR)
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
05.10.2014, 15:04  [ТС]     Нарисовать линию градиентом #5
Спасибо, но нет! Бред получается! Слишком сложно. Мне же не просто градиент нужен - мне нужно задавать цвет начала и конца. И линия может идти в обратную сторону. И быть горизонтальной и вертикальной... Под каждую свою формулу градиента выстраивать прийдется...

Кстати после рисовании линии приходится выполнять p.setShader(null);
Евгений С
23.10.2014, 15:27
  #6

Не по теме:

Есть вариант в OpenGL ES рисовать GL_Lines и каждой вершине задавать цвет начала и конца...
Если использовать GL_Lines_Strip, то можно и середины... ваще всю радугу можно в линии отобразить!!одын-одын

Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
23.10.2014, 18:31  [ТС]     Нарисовать линию градиентом #7
Цитата Сообщение от Евгений С Посмотреть сообщение
Есть вариант в OpenGL ES рисовать GL_Lines и каждой вершине задавать цвет начала и конца...
Если использовать GL_Lines_Strip, то можно и середины... ваще всю радугу можно в линии отобразить!!одын-одын
Это если в опенгеле... А мне нужно в обычном канвасе! В принципе выкрутился... Правда кода на 1.5 экрана получилось в функции линии между 2мя цветами. Одной функцией вычисляю промежуточный цвет в RGB в процентах между двумя цветами. Второй рисую линию короткими линиями не длинее 5 точек по х/у фиксированого промежуточного цвета. Получилось гладко. И работает вроде быстро. Если прижмет радугу нарисовать усложню функцию получения промежуточного цвета.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
23.10.2014, 18:44     Нарисовать линию градиентом #8
Tester64, вроде же, на xml легко градиенты рисуются.
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
23.10.2014, 18:57  [ТС]     Нарисовать линию градиентом #9
Цитата Сообщение от CoolMind Посмотреть сообщение
вроде же, на xml легко градиенты рисуются
И... Мне надо было нарисовать произвольный треугольник тремя линиями в канвасе. Углы заданы цветами.
Позиции углов заданы в XY.

Что может быть проще чем нарисовать линию между x1y1x2y2. Обычные линии легко рисую фиксированым цветом.

Пробовал через LinearGradient но оказалось что обязан задавать/высчитывать и направление градиента (вниз или вбок или в обратную сторону).

Как оказалось проще - самому!
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
24.10.2014, 10:02     Нарисовать линию градиентом #10
Tester64, вам нужен закрашенный треугольник, как на этом сайте: http://netlib.narod.ru/library/book0032/ch04_03.htm?
Тогда придётся использовать алгоритм Гуро (давно не работал с графикой и уже не подскажу, как написать).
Евгений С
самый вменяемый тролль
560 / 50 / 6
Регистрация: 19.09.2012
Сообщений: 152
24.10.2014, 11:47     Нарисовать линию градиентом #11
вроде речь была о периметре треугольника,..
Иначе точно в OpenGL ES и ортогональную проекцию...

Добавлено через 9 минут
Цитата Сообщение от CoolMind Посмотреть сообщение
Тогда придётся использовать алгоритм Гуро (давно не работал с графикой и уже не подскажу, как написать).
всё написано до нас, просто задаёшь цвет трём вершинам, он и градиентит... Но ТС это не подходит...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2014, 17:31     Нарисовать линию градиентом
Еще ссылки по теме:

Как сделать линию между а и б Android
Android нарисовать многоугольник
Как нарисовать анимированную линию Android
Android Про активити и линию
Android Как удалить нижнюю линию MPAndroidChart

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
24.10.2014, 17:31  [ТС]     Нарисовать линию градиентом #12
Цитата Сообщение от CoolMind Посмотреть сообщение
Хорошая шутка! на Direct3D под андроид...

Но задача была НА КАНВАСЕ! Там уже много чего нарисовано - нечто вроде блоксхем - текст в квадратиках/кружках/элипсах, заготовки из фоток. И их надо соединить градиентными линиями. Под любым наклоном и в любом направлении (y2 < y1) - поэтому и "упростил" задачу треугольником.

Думаю стоит закрыть тему... Конструктива уже нет, а задачу решил сам...
Yandex
Объявления
24.10.2014, 17:31     Нарисовать линию градиентом
Ответ Создать тему
Опции темы

Текущее время: 11:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru