C# 如何创建一个;夏普;Windows窗体中的渐变?
我需要用黑白(透明)渐变填充一个矩形。然而,我只能找到一个C# 如何创建一个;夏普;Windows窗体中的渐变?,c#,winforms,C#,Winforms,我需要用黑白(透明)渐变填充一个矩形。然而,我只能找到一个GradientBrush类,我找到的所有示例都显示了平滑的过渡,我想要尖锐的条。这就是我需要的: 在这段代码中,我使用picturebox,使用“k”和“i” private void pictureBox1_Paint(object sender, PaintEventArgs e) { int k = 20; Color mycolor = new Color(); f
GradientBrush
类,我找到的所有示例都显示了平滑的过渡,我想要尖锐的条。这就是我需要的:
在这段代码中,我使用picturebox,使用“k”和“i”
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
int k = 20;
Color mycolor = new Color();
for (int i = 0; i < 10; i++)
{
mycolor = Color.FromArgb(i * k, i * k, i * k);
SolidBrush mybrash = new SolidBrush(mycolor);
e.Graphics.FillRectangle((Brush)mybrash, 0 + i * k, 0, k, k);
}
}
private void pictureBox1\u Paint(对象发送方,PaintEventArgs e)
{
int k=20;
颜色mycolor=新颜色();
对于(int i=0;i<10;i++)
{
mycolor=Color.FromArgb(i*k,i*k,i*k);
SolidBrush mybrash=新的SolidBrush(mycolor);
e、 图形。填充矩形((画笔)mybrash,0+i*k,0,k,k);
}
}
祝你好运 您需要平均开始颜色和结束颜色之间的颜色。下面是一个例程,它使用此处找到的平均公式完成所有这些操作: 导致:
private void PaintGradientBars(Graphics g, Rectangle r,
Color startColor, Color endColor, int numBars) {
int rMin = startColor.R;
int gMin = startColor.G;
int bMin = startColor.B;
int rMax = endColor.R;
int gMax = endColor.G;
int bMax = endColor.B;
int left = 0;
for (int i = 0; i < numBars; i++) {
int rAvg = rMin + (int)((rMax - rMin) * i / numBars);
int gAvg = gMin + (int)((gMax - gMin) * i / numBars);
int bAvg = bMin + (int)((bMax - bMin) * i / numBars);
Color useColor = Color.FromArgb(rAvg, gAvg, bAvg);
int width = (r.Width - left) / (numBars - i);
using (SolidBrush br = new SolidBrush(useColor)) {
g.FillRectangle(br, new Rectangle(left, 0, width, r.Height));
}
left += width;
}
}
private void panel1_Paint(object sender, PaintEventArgs e) {
PaintGradientBars(e.Graphics, panel1.ClientRectangle,
Color.Blue, Color.Green, 5);
}