So i'm trying to create infinite rainbow line. Here ColorUtils class How do I get a rainbow color gradient in C#? (I'm using Framework 4.7.3
int rainbowStage = 0;
int rainbowNext = 0;
private void Form1_Paint(object sender, PaintEventArgs e)
{
BackgroundWorker worker = new BackgroundWorker();
PointF point1 = new PointF(100.0F, 100.0F);
PointF point2 = new PointF(235.0F, 100.0F);
worker.DoWork += async delegate (object s, DoWorkEventArgs args)
{
do
{
Console.WriteLine(await getRainbow());
rainbowNext++;
Pen pen = new Pen(await getRainbow(), 3);
e.Graphics.DrawLine(pen, point1, point2);
e.Graphics.Clear(Color.FromArgb(26, 26, 26));
} while (rainbowStage == rainbowNext);
};
worker.RunWorkerCompleted += delegate (object s, RunWorkerCompletedEventArgs args)
{
rainbowStage++;
};
}
async Task<ColorUtils.ColorRGB> getRainbow()
{
for (double i = 0; i < 1; i += 0.01)
{
ColorUtils.ColorRGB c = ColorUtils.HSL2RGB(i, 0.5, 0.5);
return c;
}
ColorUtils.ColorRGB c1 = ColorUtils.HSL2RGB(0, 0.5, 0.5);
return c1;
}