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++; }
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; } }
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++; }