我正在使用 GDI 在 C# 中绘制这个对象,我需要进行精确的像素绘制。但是,这不起作用...我不知道这是否重要,但我正在绘制的对象是 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 但我就是无法正确...
有什么想法吗?