我正在使用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,但我无法做到正确...
任何想法?
答案 0 :(得分:0)
刷子可能被包裹,你所看到的是相反的颜色“流血”。
尝试将wrapmode设置为
brush.WrapMode = Drawing2D.WrapMode.TileFlipXY