项目场景:
c#绘制渐变色的button
using System;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;
using static System.Windows.Forms.AxHost;
namespace WindowsFormsApp2
{
public class GradientCircle : UserControl
{
public GradientCircle()
{
this.Size = new Size(circleSize, circleSize);
this.Paint += new PaintEventHandler(GradientCircleForm_Paint);
//this.Click += GradientCircleForm_Click;
}
private double _scale;
int circleSize = 300, InitialSize = 300;
[Category("自定义")]
public double OverrideScale
{
set
{
circleSize = (int)(_scale * InitialSize);
this.Size = new Size(circleSize, circleSize);
_scale = value;
this.Invalidate();
}
}
private Color _clrGradientCircle=Color.Green;
[Category("自定义")]
public Color ColorGradientCircle
{
get {
return _clrGradientCircle;
}
set {
_clrGradientCircle = value;
Invalidate();
}
}
private void GradientCircleForm_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
g.SmoothingMode = SmoothingMode.AntiAlias;
Rectangle circleRect = new Rectangle(
(this.ClientSize.Width - circleSize) / 2,
(this.ClientSize.Height - circleSize) / 2,
circleSize,
circleSize);
using (GraphicsPath path = new GraphicsPath())
{
path.AddEllipse(circleRect);
using (PathGradientBrush brush = new PathGradientBrush(path))
{
// 设置中心颜色
brush.CenterColor = Color.White;
// 边缘颜色可以是多种颜色
Color[] surroundColors = new Color[] { _clrGradientCircle };
brush.SurroundColors = surroundColors;
g.FillPath(brush, path);
}
}
}
}
}