private void НарисоватьЛучи(Raster targetRaster, Raster layerRaster) { var colors = new List <Tuple <int, int, Color> >(); var color = Color.FromArgb(Rand.Next(255), Rand.Next(255), Rand.Next(255)); for (var номерЛуча = 0; номерЛуча < МаксКоличествоЛучей; номерЛуча++) { colors.Add(new Tuple <int, int, Color>(номерЛуча, 0, Color.Transparent)); } for (var номерКольца = 1; номерКольца < КоличествоКолец; номерКольца++) { var b = (float)номерКольца / КоличествоКолец; color = GetNextColor(color, ИзменениеЦвета); for (var номерЛуча = 0; номерЛуча < МаксКоличествоЛучей; номерЛуча++) { var alpha = МаксНепрозрачность * Math.Sin(b * Math.PI); colors.Add(new Tuple <int, int, Color>(номерЛуча, номерКольца, Color.FromArgb((int)alpha, color))); } } var starPoints = НачальныеТочки.CreateStarPoints(targetRaster.Size, МаксКоличествоЛучей, КоличествоКолец, 0.9f, (ray, ring) => colors.Single(cp => cp.Item1 == ray && cp.Item2 == ring).Item3).ToList(); var points = starPoints.Where(colorPoint => colorPoint.Color.A > 0).ToList(); points.Add(new ColorPoint { Point = new Point(targetRaster.Width / 2, targetRaster.Height / 2), Color = Color.FromArgb(МаксНепрозрачность, GetNextColor(color, ИзменениеЦвета)) }); Draw(points, targetRaster, layerRaster); }
private void НарисоватьСпираль(Raster targetRaster, Raster layerRaster) { var maxRadius = Math.Sqrt(targetRaster.Width * targetRaster.Width + targetRaster.Height * targetRaster.Height); var color = Color.FromArgb(МаксНепрозрачность, Rand.Next(255), Rand.Next(255), Rand.Next(255)); var dAngle = 1d / МаксКоличествоЛучей; var dRadius = maxRadius / (КоличествоКолец * МаксКоличествоЛучей); var starPoints = НачальныеТочки.CreateSwirlPoints(targetRaster.Size, dRadius, dAngle, (angle, radius) => { var alpha = ((maxRadius - radius) / maxRadius) * МаксНепрозрачность; return(GetNextColor(Color.FromArgb((int)alpha, color), ИзменениеЦвета)); }); Draw(starPoints, targetRaster, layerRaster); }