Я рисую этот объект в C #, используя GDI, и мне нужно иметь точное рисование пикселей. Тем не менее, это не работает ... Я не знаю, имеет ли это значение, но объект, который я рисую, является ToolStrip, я делаю пользовательский рендер ToolStrip.
Я нарисовал горизонтальную синюю линию в 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);
Чем, в точке y-пикселя 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, но я просто не могу сделать это правильно ...
Есть идеи?