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 でプレイしましたが、うまくできません...
アイデアはありますか?