crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

greh
  опции профиля:
сообщение 9.10.2010, 13:12
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 48
Регистрация: 23.11.2009
Пользователь №: 1252

Спасибо сказали: 0 раз(а)




Репутация:   0  


Вообщем нужно сделать заливку не линейным градиентом а "маршрутным" т.е. тот же линейный, только setColorAt не от 0 до 1 а в координатах. Допустим от 0 (x),10 (y) до 10,10 белый-красный, от 10,10 до 100,50 он красно чёрный, и т.д. На VS2010 это делается примерно так:
Раскрывающийся текст
Создание кисти из маршрута:
1.Объявляем переменную класса System.Drawing.Drawing2D.PathGradientBrush.
2.Инициализируем при помощи конструктора new System.Drawing.Drawing2D.PathGradientBrush(path), где path – ранее созданный маршрут.
3.Для каждой точки маршрута, а также для центральной можно задать свой цвет. Для этого используется:
P_Br.SurroundColors = new Color[3] { Color.Red, Color.Blue, Color.Green};
P_Br.CenterColor = Color.Yellow, где P_Br – объект класса System.Drawing.Drawing2D.PathGradientBrush,
Количество цветов должно быть равным ранее объявленному количеству точек в маршруте.
4.Кисть можно использовать при рисования фигуры, сам маршрут (контур фигуры) также можно нарисовать при помощи Grp.DrawPath(Pens.Black, path);
5.Фигура не обязательно должна повторять маршрут (рисование при помощи Grp.FillPath(P_Br, path); ), а может быть больше либо меньше его по геометрическим размерам. Однако, если фигура превосходит размеры маршрута, то часть ее, выступающая за маршрут, не будет заполнена.

Есть идеи? Кроме как сделать на VS это?))
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Алексей1153
  опции профиля:
сообщение 9.10.2010, 18:59
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2944
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Цитата(greh @ 9.10.2010, 21:16) *
А есть ли разница для меня?

разница конечно есть - если в шарпе готовый инструмент есть, а в Qt - нету, то вот тебе и разница ))

Картинка наводит на мысль, что использованы полигоны с типом заливки - градиент между вертексами
Что в свою очередь наводит на мысль об использовании OpenGL (в шарпе - DX)

Сообщение отредактировал Алексей1153 - 9.10.2010, 19:00
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
greh
  опции профиля:
сообщение 9.10.2010, 19:22
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 48
Регистрация: 23.11.2009
Пользователь №: 1252

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Алексей1153 @ 9.10.2010, 21:59) *
Цитата(greh @ 9.10.2010, 21:16) *
А есть ли разница для меня?

разница конечно есть - если в шарпе готовый инструмент есть, а в Qt - нету, то вот тебе и разница ))

Картинка наводит на мысль, что использованы полигоны с типом заливки - градиент между вертексами
Что в свою очередь наводит на мысль об использовании OpenGL (в шарпе - DX)



OpenGL это уж на крайний случай. Может с "костылями" как нибудь сделать? Может как то через path? Ну подкиньте идею пожалуйста.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 28.6.2025, 23:46