Example #1
0
        /// <summary>
        /// Creates the viewport for this bar graph.
        /// </summary>
        protected override void Generate()
        {
            CalculateValues();
            double camY = ((_Max - _Min) / 2d + _Min) * _HeightRatio;

            if (Viewport != null)
            {
                _Camera = Viewport.Camera as PerspectiveCamera;
                Point3DAnimation anim = new Point3DAnimation(new Point3D(0, camY, -5), TransitionTime);
                _Camera.BeginAnimation(PerspectiveCamera.PositionProperty, anim);
            }
            else
            {
                _Camera.FarPlaneDistance = 30;
                _Camera.NearPlaneDistance = 1;
                _Camera.FieldOfView = 90;
                _Camera.Position = new Point3D(0, camY, -5);
                _Camera.LookDirection = new Vector3D(0, 0, 5);
                _Camera.UpDirection = new Vector3D(0, 1, 0);
            }

            if (Viewport == null)
            {
                ModelVisual3D mv = new ModelVisual3D();
                Model3DGroup mg = new Model3DGroup();
                mv.Content = mg;
                Viewport = new Viewport3D();
                Viewport.Children.Add(mv);
                foreach (Bar bar in Pieces)
                {
                    bar.Generate();
                    mg.Children.Add(bar.Geometry);
                    //ToolTip3D tt = _Tooltips[bar.Key];
                    //mv.Children.Add(tt);
                }
                mg.Children.Add(new AmbientLight(Color.FromRgb(128, 128, 128)));
                mg.Children.Add(new DirectionalLight(Colors.White, new Vector3D(1, 1, 1)));

                Viewport.Camera = _Camera;
                AttachEventsToViewport();
            }
        }