Ejemplo n.º 1
0
        /// <summary>
        /// This is a javascript application.
        /// </summary>
        /// <param name="page">HTML document rendered by the web server which can now be enhanced.</param>
        public Application(IDefault page)
        {

            //AddTransform(canvas);

            var context = new CanvasRenderingContext2D();

            var canvas = context.canvas.AttachTo(page.Content);
            canvas.style.SetSize(400, 400);


            Action DrawLogo = delegate { };

            new white_jsc().InvokeOnComplete(
                img =>
                {
                    var data = img.toDataURL();

                    DrawLogo = delegate
                    {

                        context.drawImage(
                            new IHTMLImage { src = data },
                            0, 0, 96, 48 // ??
                        );
                    };
                }
            );

            var r = new Random();
            Func<float> random = () => (float)r.NextDouble();

            var lastX = context.canvas.width * random();
            var lastY = context.canvas.height * random();
            var hue = 0;
            Action line = delegate
            {
                context.save();
                context.translate(context.canvas.width / 2, context.canvas.height / 2);
                context.scale(0.9f, 0.9f);
                context.translate(-context.canvas.width / 2, -context.canvas.height / 2);
                context.beginPath();
                context.lineWidth = 5f + random() * 10f;
                context.moveTo(lastX, lastY);
                lastX = context.canvas.width * random();
                lastY = context.canvas.height * random();
                context.bezierCurveTo(context.canvas.width * random(),
                                      context.canvas.height * random(),
                                      context.canvas.width * random(),
                                      context.canvas.height * random(),
                                      lastX, lastY);

                hue = hue + Convert.ToInt32((double)(10 * random()));
                context.strokeStyle = "hsl(" + hue + ", 50%, 50%)";
                context.shadowColor = "white";
                context.shadowBlur = 10;
                context.stroke();
                context.restore();

            };

            line.AtInterval(50);


            Action blank = delegate
            {
                context.fillStyle = "rgba(0,0,0,0.1)";
                context.fillRect(0, 0, context.canvas.width, context.canvas.height);

                DrawLogo();

            };

            blank();

            blank.AtInterval(40);
        }