我有这段代码,可以将一些混合添加到Windows窗体中:

public partial class Form1 : Form
{
    protected override void OnPaintBackground(PaintEventArgs e)
    {
        using (LinearGradientBrush brush = new LinearGradientBrush(this.ClientRectangle,
               Color.White,
               Color.Black,
               LinearGradientMode.Vertical))
        {
            e.Graphics.FillRectangle(brush, this.ClientRectangle);
        }
    }
}


结果如下:

c# - C#LinearGradientBrush。如何更改两种颜色混合的点?-LMLPHP

默认情况下,两种颜色混合的“峰值”正好位于框的中间。我要调整代码,使混合的“峰值”朝顶部大约3/4发生。是否可以更改两种颜色开始融合的点?

先感谢您。

最佳答案

您可以将笔刷的InterpolationColors属性设置为合适的ColorBlend,例如:

using (var brush = new LinearGradientBrush(this.ClientRectangle,
    Color.Transparent, Color.Transparent, LinearGradientMode.Vertical))
{
    var blend = new ColorBlend();
    blend.Positions = new[] { 0, 3 / 4f, 1 };
    blend.Colors = new[] { Color.White, Color.Black, Color.Black };
    brush.InterpolationColors = blend;
    e.Graphics.FillRectangle(brush, this.ClientRectangle);
}


c# - C#LinearGradientBrush。如何更改两种颜色混合的点?-LMLPHP

或例如另一种混合:

blend.Positions = new[] { 0, 1 / 2f, 1 };
blend.Colors = new[] { Color.White, Color.Gray, Color.Black };


c# - C#LinearGradientBrush。如何更改两种颜色混合的点?-LMLPHP

关于c# - C#LinearGradientBrush。如何更改两种颜色混合的点?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40411863/

10-13 06:06