/// <summary> /// Initializes a new instance of the <see cref="StructureControl"/> class and sets up visual elements for rendering. /// </summary> /// <param name="pdbViewer">The PDB viewer.</param> internal StructureControl(PdbViewer pdbViewer) { this.pdbViewer = pdbViewer; NameScope.SetNameScope(this, new NameScope()); this.viewport = new Viewport3D(); this.viewport.ClipToBounds = true; this.Children.Add(this.viewport); this.camera = new PerspectiveCamera(); this.camera.Position = new Point3D(0, 0, cameraOffset); this.viewport.Camera = this.camera; ModelVisual3D lightingVisual = new ModelVisual3D(); this.viewport.Children.Add(lightingVisual); Model3DGroup lightingModel = new Model3DGroup(); lightingVisual.Content = lightingModel; PointLight pointLight = new PointLight(Colors.White, new Point3D(-4, 4, 8)); lightingModel.Children.Add(pointLight); AmbientLight ambientLight = new AmbientLight(Color.FromRgb(32, 32, 32)); lightingModel.Children.Add(ambientLight); this.moleculeVisual = new ModelVisual3D(); viewport.Children.Add(this.moleculeVisual); Transform3DGroup transformGroup = new Transform3DGroup(); this.moleculeVisual.Transform = transformGroup; this.translateTransform = new TranslateTransform3D(); transformGroup.Children.Add(this.translateTransform); this.scaleTransform = new ScaleTransform3D(); transformGroup.Children.Add(this.scaleTransform); this.rotateTransform = new RotateTransform3D(); this.rotateTransform.Rotation = new QuaternionRotation3D(); transformGroup.Children.Add(this.rotateTransform); this.selectionRectangle = new Rectangle(); this.selectionRectangle.Stroke = Brushes.White; this.selectionRectangle.Fill = new SolidColorBrush(Color.FromArgb(32, 255, 255, 255)); this.selectionRectangle.Visibility = Visibility.Hidden; this.Children.Add(this.selectionRectangle); this.testLabel = new Label(); this.testLabel.Foreground = Brushes.White; this.testLabel.FontSize = 20; this.testLabel.HorizontalAlignment = HorizontalAlignment.Left; this.testLabel.VerticalAlignment = VerticalAlignment.Center; this.Children.Add(this.testLabel); this.clip = 1; this.slab = 0; this.UpdateClipping(); }
/// <summary> /// Initializes a new instance of the <see cref="ArtifactControl"/> class. /// </summary> public ArtifactControl() { this.border = new Border(); this.border.Background = Brushes.Black; this.Content = this.border; this.pdbViewer = new PdbViewer(); this.border.Child = this.pdbViewer; }