0

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 でプレイしましたが、うまくできません...

アイデアはありますか?

4

1 に答える 1

0

ブラシがラップされている可能性があり、見ているのは反対の色の「にじみ」です。

ラップモードを次のように設定してみてください

brush.WrapMode = Drawing2D.WrapMode.TileFlipXY
于 2009-09-13T02:11:11.903 に答える