A PathGradientBrush object has a boundary path and a center point. When you fill an area with a path gradient brush, the color changes gradually as you move from the boundary path to the center point. By default, the color is linearly related to the distance.
Соответственно, по умолчанию этот центральный цвет — белый.
Следующий код дает похожий на правду результа (центральный цвет взят как среднее арифметическое угловых)
Здесь проблема в том, что вы не позаботились об установке свойств PathGradientBrush.CenterPoint и PathGradientBrush.CenterColor, задающие соответственно координаты и цвет "центра масс" вашей фигуры.
По какой-то непонятной мне причине при использовании конструктора PathGradientBrush( GraphicsPath ) свойство CenterColor устанавливается в белый цвет, отсюда и ваша "странная" картинка.
Уже установка этого свойства в чёрный цвет позволяет получить картинку, достаточно близкую к тому, что вам нужно. А если вы ещё немного поиграетесь с этим свойством, то сможете получить совсем такую же.
Данная информация предоставляется на условиях «КАК ЕСТЬ», без предоставления каких-либо гарантий и прав. Используя данную информацию, вы соглашаетесь с тем, что (i) Майкрософт не несет ответственности за использование вами данной информации и (ii) вы принимаете на себя весь риск, связанный с использованием данной информации.
Здравствуйте, Name, Вы писали:
N>Здесь проблема в том, что вы не позаботились об установке свойств PathGradientBrush.CenterPoint и PathGradientBrush.CenterColor,
Пробовал я и то и другое. С теми цветами что я привел в первой мессаги еще можно как то уравновесить CenterColor через среднее арифметическое и получить примерно такой результат, что и ожидался. Но если взять за угловые цвета такие как красный, синий, зеленый, желтый, то парится уже приходится неподеццки. Практически при любом раскладе пробиваются непонятные диагональные составляющие... Пробовал CenterColor и в Empty и в Transparent ставитьб убирал CenterPoint за "пределы видимости" — нифига, диагонали все равно видно.
Ну да бог с ним.. решил проблему с помошью линейного градиента.
Здравствуйте, krasin, Вы писали:
K>Следующий код дает похожий на правду результа (центральный цвет взят как среднее арифметическое угловых)
Ага, спасибо за пример, но если приглядеться то видно диагональные ребра, которые при другом цветовом раскладе еще более заметны (красный, зеленый, синий, желтый). Похоже что штатнымы средствами в один присест этого не сделать.
Пришлось делать эту заливку линейныйм градиентом. Все нормально отрисовывает, но как всегда МS не дает нам спать спокойно и со своей стороны заботится об энтертейменте в виде танцов с бубном
Re[2]: PathGradientBrush
От:
Аноним
Дата:
20.06.05 07:30
Оценка:
Если не жалко кинь сюда сорс как ты сделал.
Заранее спасибо.
-- Если тебе помогли, незабудь сказать спасибо --
-- Это всё мое личное мнение которое может не совпадать с Вашим или может быть ошибочным --