Example #1
0
        private void CreateEllipse(RayTracer.Sphere sphere)
        {
            DragCanvas canvas  = (DragCanvas)this.FindName("canvas");
            Ellipse    ellipse = new Ellipse();

            ellipse.Stroke = new SolidColorBrush(Colors.Black);
            int r = (int)(sphere.color.r * 256);
            int g = (int)(sphere.color.g * 256);
            int b = (int)(sphere.color.b * 256);

            ellipse.Fill = new SolidColorBrush(System.Windows.Media.Color.FromRgb((byte)r, (byte)g, (byte)b));
            float diameter = (float)(sphere.diameter * CANVAS_SCALE);

            ellipse.Width  = diameter;
            ellipse.Height = diameter;
            ellipse.Name   = "Ellipse" + ellipseCount;

            objects[ellipse.Name] = sphere;

            Canvas.SetLeft(ellipse, sphere.xPos * CANVAS_SCALE);
            Canvas.SetTop(ellipse, sphere.yPos * CANVAS_SCALE);
            canvas.Children.Add(ellipse);

            list.Add(ellipse);
            AddAndSelectObject(ellipse);
            ellipseCount++;
        }
Example #2
0
        private void MenuItem_Load_Click(object sender, RoutedEventArgs e)
        {
            System.Windows.Forms.OpenFileDialog fDialog = new System.Windows.Forms.OpenFileDialog();

            if (fDialog.ShowDialog() != System.Windows.Forms.DialogResult.OK)
            {
                return;
            }
            string  filename = fDialog.FileName;
            DataSet data     = new DataSet();

            RayTracer.Parser parser = new RayTracer.Parser();

            RayTracer.Database.DataTableHelper.ReadXmlIntoDataSet(data, filename);
            List <RayTracer.Scene> scenes = parser.LoadScene(data);

            addFloor = false;
            DragCanvas canvas = (DragCanvas)this.FindName("canvas");

            canvas.Children.Clear();
            objects.Clear();
            ContextMenu contextMenu = (ContextMenu)this.FindName("selectContextMenu");

            contextMenu.Items.Clear();


            foreach (Scene scene in scenes)
            {
                this.camera = scene.camera;
                this.light  = scene.light;

                foreach (AObject aObject in scene.allObjects)
                {
                    if (aObject.GetType() == typeof(RayTracer.Floor))
                    {
                        addFloor = true;
                    }
                    else if (aObject.GetType() == typeof(RayTracer.Block))
                    {
                        CreateBlock((RayTracer.Block)aObject);
                    }
                    else if (aObject.GetType() == typeof(RayTracer.Sphere))
                    {
                        CreateEllipse((RayTracer.Sphere)aObject);
                    }
                }

                break;
            }
        }
Example #3
0
        private void CreateBlock(RayTracer.Block block)
        {
            DragCanvas canvas = (DragCanvas)this.FindName("canvas");
            Rectangle  rect   = new Rectangle();

            rect.Stroke = new SolidColorBrush(Colors.Black);
            int r = (int)(block.color.r * 256);
            int g = (int)(block.color.g * 256);
            int b = (int)(block.color.b * 256);

            rect.Fill = new SolidColorBrush(System.Windows.Media.Color.FromRgb((byte)r, (byte)g, (byte)b));

            rect.Name = "Rectangle" + rectangleCount;

            if (currentView == View.FRONT)
            {
                rect.Width  = block.getWidth() * CANVAS_SCALE;
                rect.Height = block.getHeight() * CANVAS_SCALE;
                Canvas.SetLeft(rect, block.a.X * CANVAS_SCALE);
                Canvas.SetTop(rect, block.a.Y * CANVAS_SCALE);
            }
            else if (currentView == View.TOP)
            {
                rect.Width  = block.getWidth() * CANVAS_SCALE;
                rect.Height = block.getDepth() * CANVAS_SCALE;
                Canvas.SetLeft(rect, block.c.X * CANVAS_SCALE);
                Canvas.SetTop(rect, block.c.Z * CANVAS_SCALE);
            }
            else
            {
                rect.Width  = block.getDepth() * CANVAS_SCALE;
                rect.Height = block.getHeight() * CANVAS_SCALE;
                Canvas.SetLeft(rect, block.b.Z * CANVAS_SCALE);
                Canvas.SetTop(rect, block.b.Y * CANVAS_SCALE);
            }
            objects[rect.Name] = block;


            canvas.Children.Add(rect);
            list.Add(rect);
            AddAndSelectObject(rect);
            rectangleCount++;
        }