[C#] Изменение цвета по градиенту
ты на чём рисуешь?
Используя стандартный System.Drawing
PathGradientBrush
задаешь surroudcolors (цвета по точкам пути)
задаешь centerpoint
задаеш ей цвет
все
ну все ето для pathgradientbrush
С градиентом разобрался, спасибо. Еще такой вопрос: форма заполнена какими-то цветами, я добавляю на нее еще объект определенного цвета, размера, и хочу чтобы его цвет смешался с цветом того, что под ним. Ну то есть добавить его цвет к цвету фона.
И еще, как правильно смешать два цвета в argb Color1(0, r1, g1, b1) и Color2(0, r2, g2, b2 взять среднее арифметическое из r1-r2, g1-g2 и b1-b2?
plz, кто-нибудь! срочно надо.
ыыы. В общем случае нету такой. Если у тебя на форме лежит картинка, то бери цвет из соответствующей точки картинки.
>И еще, как правильно смешать два цвета в argb
Например так, да. Но вообще слово "правильно" тут бессмысленно. Есть некоторые устоявшиеся техники, которые соответствуют некоторым физическим явлениям.
result = alpha * colorImageRGB + (1 - alpha) * colorBackgroundRGB - это твое среднее арифметическое в общем случае.
Ещё можно просто сложить
Или покомпонентно перемножить
ыыы. В общем случае нету такой. Если у тебя на форме лежит картинка, то бери цвет из соответствующей точки картинки.на форме рисую следующее:
class Gradient : Form {
protected override void OnPaint(PaintEventArgs ea){
base.OnPaint(ea);
Graphics g = ea.Graphics;
Rectangle myEllipse = new Rectangle(0, 0, 200, 200);
GraphicsPath path = new GraphicsPath;
path.AddEllipse(myEllipse);
PathGradientBrush pgb = new PathGradientBrush(path);
pgb.CenterColor = Color.Red;
pgb.SurroundColors = new Color[]{Color.White};
g.FillRectangle(pgb, 0, 0, 200, 200);
}
Может есть способ как-то определить, какой цвет попал в данную точку?
Оставить комментарий
nisven
Как задать изменение цвета по градиенту при удалении от точки по всем направлениям?