private static void Main(string[] args) { var image = new Image(500, 500); Stopwatch sw = new Stopwatch(); Console.WriteLine("C# RayTracer Test"); long t = 0; long n = 1; for (var i = 0; i < n; i++) { sw.Reset(); sw.Start(); var rayTracer = new RayTracerEngine(); var scene = new Scene(); rayTracer.Render(scene, image); sw.Stop(); t += sw.ElapsedMilliseconds; } image.Save("csharp-ray-tracer.png"); Console.WriteLine(""); Console.WriteLine("Total time: " + (t / n).ToString() + " ms"); Console.ReadLine(); }
private void RenderMenu_Click(object sender, EventArgs e) { // disable the render menu while rendering RenderMenu.Enabled = false; // find the render size (stored as an object in the selected menu's Tag property) int size = int.Parse((sender as ToolStripMenuItem).Tag.ToString()); // create a new Bitmap object where we will render to _bitmap = new Bitmap(size, size); // update the size and location of the picturebox that will show the final result RenderedImage.Size = new Size(size, size); RenderedImage.BackgroundImage = null; CenterRenderedImage(); // print out a message on the picture box using (Graphics g = RenderedImage.CreateGraphics()) { g.FillRectangle(SystemBrushes.Control, 0, 0, RenderedImage.Width, RenderedImage.Height); g.DrawString("Rendering.\r\nPlease wait...", this.Font, SystemBrushes.WindowText, 0f, 0f); } // create the ray tracer RayTracerEngine rayTracer = new RayTracerEngine(_bitmap.Width, _bitmap.Height); // start rendering the scene RenderedImage.BackgroundImage = rayTracer.Render(_scenes.GetByName(_selectedScene)); // re-enable the render menu RenderMenu.Enabled = true; }