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

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

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

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

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

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

Нашел один, но это ужас - рисую прямоугольник градиентом и предстоит "подогнать" формулами (синусами) под наклоном между точками...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.10.2014, 02:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Нарисовать линию градиентом (Программирование Android):

Нарисовать линию - Программирование Android
Привет всем. Почему данный код не рисует линиЮ? package com.exampl1e.tt; import android.content.Context; import...

Как нарисовать анимированную линию - Программирование Android
Добрый день, форумчане. Есть интересная задача! Необходимо анимировано нарисовать стрелочку из одной точки к другой. Ясно, что...

Как нарисовать ломанную линию под ListView - Программирование Android
Доброго дня. Возникла необходимость под прокручиваемый список добавить ломанную линию. Если использовать одну и ту же картинку то на...

Рисуем линию на TextView - Программирование Android
Привет! Имею ListView с итемами из двух TextView, которые заполняются через кастомный CursorAdapter. В первом textview1 - время вида...

Про активити и линию - Программирование Android
1. (см. вложение) Обязательно ли для каждого раздела меню создавать новое активити? (при нажатии открывается отдельное окно кк в whatsapp) ...

Как сделать линию между а и б - Программирование Android
нужен метод "по умному" :) как это делается?)

11
Max64
20 / 20 / 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);
1
Tester64
396 / 357 / 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);
А можте заполнить (...)? Согласно примерам я получил только полностью закрашеный грдиентом экран.
0
Max64
20 / 20 / 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)
1
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
05.10.2014, 15:04  [ТС] #5
Спасибо, но нет! Бред получается! Слишком сложно. Мне же не просто градиент нужен - мне нужно задавать цвет начала и конца. И линия может идти в обратную сторону. И быть горизонтальной и вертикальной... Под каждую свою формулу градиента выстраивать прийдется...

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

Не по теме:

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

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

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

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

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

Добавлено через 9 минут
Цитата Сообщение от CoolMind Посмотреть сообщение
Тогда придётся использовать алгоритм Гуро (давно не работал с графикой и уже не подскажу, как написать).
всё написано до нас, просто задаёшь цвет трём вершинам, он и градиентит... Но ТС это не подходит...
0
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
24.10.2014, 17:31  [ТС] #12
Цитата Сообщение от CoolMind Посмотреть сообщение
Хорошая шутка! на Direct3D под андроид...

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

Думаю стоит закрыть тему... Конструктива уже нет, а задачу решил сам...
0
24.10.2014, 17:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2014, 17:31
Привет! Вот еще темы с ответами:

Как удалить нижнюю линию MPAndroidChart - Программирование Android
Привет! Товарищи, кто знает как удалить обведенную линию? Пробовал: ...

Как можно сделать линию толще (Google Maps) - Программирование Android
Я рисую путь на Google Map между двумя точками как сделать линию соединяющую эти две точки толще??

При размещении объектов в одну линию уползает разметка - Программирование Android
добрый вечер. Сегодня столкнулся с проблемой: необходимо отобразить в одну линию 2 или 3 обьекта при этом 1 - й -- edit text, 2-й text...

нарисовать круг с вращающимся градиентом, - Visual Basic
Пожалуйста прошу помогите нарисовать круг с вращающимся градиентом в Basic )) очень очень нужно.


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

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