コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }