/// <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); }