Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > Поле давления в WPF


Автор: Greenberet 22.5.2011, 22:02
Добрый день.

Стоит следующая задача:
Задано поле давления(функция от двух переменных, которая каждой точке на плоскости ставит в соответсвие какое то число).
Необходимо разрисовать квадратную область в зависимости от значений в точках(какому цвету какое число соответствует не суть важно).
Разумеется, придется вводить апроксимацию. Самый простой способ,который я вижу, это просто разбить область на 'n' квадратов и
каждому из них ставить фон в зависимости от значения функции в центральной точке. Функция непрерывная, по этому переход между 
цветами плавный. Но, что б при апроксимации достичь хоть небольшой плавности перехода цветов придется вводить большое количество квадратов
разбиения, что сущетвенно повлияет на производительность.

Вопрос - можно ли это как то по другому реализовать? Например с помощью GradientBrush?

Буду благодарен за любую помощь.

Best regards,
Greenberet

Автор: -Mikle- 22.5.2011, 23:32
Все равно мало понял, картинку нарисуй, что хочешь получить на выходе.

Автор: likegift 23.5.2011, 07:44
график типа этого?

user posted image

Автор: -Mikle- 23.5.2011, 17:00
Если хочешь градиентно, то наверное лучшим способом будет отрисовывать все в битмапе. Только не по координатам пикселей, а напрямую записью в буфер. Других идей у меня нет. Рисовать векторно средствами WPF - не лучший способ по производительности.

Автор: Greenberet 23.5.2011, 20:06
likegift, да, что то вроде этого

Автор: DenWPF 24.5.2011, 00:59
Я не сильно в этом разбираюсь.

Но как вариант пускать пути по вершинам, наверное даже лучше фигуры, делать прозрачность и каждую отдельно градиентить.
хотя...ну не знаю, сложно мне это представить, но кажется можно.

Автор: likegift 24.5.2011, 05:20
Greenberet, ну тогда гугли контрол по wpf surface graph

Автор: Greenberet 24.5.2011, 09:00
хм, а это хорошая идея рисовать все на viewport3d, производительность должна быть хорошая. Спасибо за помощь.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)