コード例 #1
0
        public void LoadXML(XmlReader reader)
        {
            _GradientSegments.Clear();
            XMLHelpers.ReadOrbitType(reader, "orbitType", ref _OrbitType);
            XMLHelpers.ReadBlendType(reader, "blendType", ref _BlendType);
            XMLHelpers.ReadDouble(reader, "multiplier", ref _Multiplier);
            XMLHelpers.ReadDouble(reader, "offset", ref _Offset);
            XMLHelpers.ReadDouble(reader, "power", ref _Power);

            while (reader.NodeType != XmlNodeType.EndElement && reader.Read())
            {
                if (reader.NodeType == XmlNodeType.Element && reader.Name == "GRADIENTSEGMENT")
                {
                    GradientSegment seg = new GradientSegment();
                    seg.LoadXML(reader);
                    _GradientSegments.Add(seg);
                }
            }

            // backwards compatability
            if (_GradientSegments.Count() == 0)
            {
                _GradientSegments.Add(new GradientSegment());
            }

            reader.Read();
        }
コード例 #2
0
        private void image1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            Point clkPosition = e.GetPosition(image1);
            float left        = (float)clkPosition.X / ((float)image1.ActualWidth - 1.0f);

            int edge = GetNearestEdge(left);

            if (edge > -1)
            {
                _DragEdge = edge;
                Mouse.Capture(sender as System.Windows.IInputElement);
                _ValueDrag = true;
                _DragStart = left;
            }

            _CurrentSegment = 0;
            for (int i = 0; i < _FractalColours._GradientSegments.Count(); i++)
            {
                if (left > _FractalColours._GradientSegments[i]._StartX)
                {
                    _CurrentSegment++;
                }
            }
            _CurrentSegment--;

            if (e.ClickCount == 2)
            {
                if (GetNearestEdge(left) == -1)
                {
                    Material mat = _FractalColours._GradientSegments[_CurrentSegment].GetMaterial(left);

                    GradientSegment segment = new GradientSegment();
                    segment._StartX      = _FractalColours._GradientSegments[_CurrentSegment]._StartX;
                    segment._StartColour = _FractalColours._GradientSegments[_CurrentSegment]._StartColour.Clone();
                    segment._EndX        = left;
                    segment._EndColour   = mat.Clone();

                    _FractalColours._GradientSegments[_CurrentSegment]._StartX      = left;
                    _FractalColours._GradientSegments[_CurrentSegment]._StartColour = mat.Clone();

                    _FractalColours._GradientSegments.Insert(_CurrentSegment, segment);

                    SetDirty();
                }
            }

            materialSelector1.SetSelectedMaterial(_FractalColours._GradientSegments[_CurrentSegment]._StartColour);
            materialSelector2.SetSelectedMaterial(_FractalColours._GradientSegments[_CurrentSegment]._EndColour);


            GUIUpdate();
        }