Я рисую этот объект на C#, используя GDI, и мне нужно иметь точную картину пикселя. Однако это не работает ... Я не знаю, имеет ли значение, но объект, который я рисую, - ToolStrip, я выполняю индивидуальный рендеринг ToolStrip.Как нарисовать точный градиент с LinearGradientBrush в C#?
Я нарисовал горизонтальную синюю линию на y-пикселе 1, чем желтый на y-пикселе 2, чем красный на y-пикселе 3. Это не настоящие цвета, это просто для меня лучше.
Как это:
Color cTop1 = Color.FromArgb(255, Color.Blue);
Color cTop2 = Color.FromArgb(255, Color.Yellow);
Color cTop3 = Color.FromArgb(255, Color.Red);
g.DrawLine(new Pen(cTop1), 0, 1, aBounds.Width, 1);
g.DrawLine(new Pen(cTop2), 0, 2, aBounds.Width, 2);
g.DrawLine(new Pen(cTop3), 0, 3, aBounds.Width, 3);
чем при у-пикселя 4 Я начал заполнять прямоугольник с LinearGradientBrush, например так:
Rectangle rTop = new Rectangle(0, 3, aBounds.Width, (aBounds.Height/2) - 4);
Color cTop = Color.FromArgb(245, Color.White);
Color cBottom = Color.FromArgb(222, Color.White);
LinearGradientBrush tGradient = new LinearGradientBrush(rTop, cTop, cBottom, LinearGradientMode.Vertical);
g.FillRectangle(tGradient, rTop);
Проблема заключается в том, что градиент окраски выше красный линия. Синий и желтый цвета в порядке, но красная линия, которая должна быть RGB = 255,0,0, на самом деле равна RGB = 255,111,111.
Я не могу понять, почему ... Я играл в SmoothingMode, InterpolationMode, CompositionMode, CompositionQuality, но я просто не могу сделать это правильно ...
Любые Ideias?
Не работал, пробовал все другие и так далее :( –
На самом деле, это действительно сработало, но у меня была эта строка «g.SmoothingMode = SmoothingMode.AntiAlias;» и ее нужно было удалить. –