代码之家  ›  专栏  ›  技术社区  ›  Jon B

.NET WinForms应用程序中的圆形渐变

  •  3
  • Jon B  · 技术社区  · 15 年前

    在我的WinForms应用程序(C#)中,我有一个圆(由 Rectangle )我现在用纯色填充。我想用一个 圆形的 (不是线性的)渐变(所以中心的一种颜色在边缘均匀地淡入另一种颜色)。

    我试过 PathGradientBrush ,但我运气不好(我还是看到了纯色)。如果有人有任何这样做的示例代码,那将是非常棒的!

    1 回复  |  直到 15 年前
        1
  •  3
  •   Jon B    15 年前

    我找到了解决办法 here .

    private void label1_Paint(object sender, PaintEventArgs e)
    {
        GraphicsPath gp = new GraphicsPath();
        gp.AddEllipse(label1.ClientRectangle);
    
        PathGradientBrush pgb = new PathGradientBrush(gp);
    
        pgb.CenterPoint = new PointF(label1.ClientRectangle.Width / 2, 
                                     label1.ClientRectangle.Height / 2);
        pgb.CenterColor = Color.White;
        pgb.SurroundingColors = new Color[] { Color.Red };
    
        e.Graphics.FillPath(pgb, gp);
    
        pgb.Dispose();
        gp.Dispose();
    }