コード例 #1
0
        protected override void OnRender(DrawingContext dc)
        {
            dc.PushGuidelineSet(Guidelines);

            // This isn't pointless, it makes WPF mouse hit tests succeed near the wire instead of exactly on it.
            dc.DrawRectangle(Brushes.Transparent, null, new Rect(-2, -2, ActualWidth + 4, ActualHeight + 4));

            if (Selected)
            {
                dc.DrawLine(SelectedWirePen, new Point(0, 0), new Point(ActualWidth, ActualHeight));
            }
            else if (Highlighted)
            {
                dc.DrawLine(HighlightedWirePen, new Point(0, 0), new Point(ActualWidth, ActualHeight));
            }
            else
            {
                dc.DrawLine(WirePen, new Point(0, 0), new Point(ActualWidth, ActualHeight));
            }

            ElementControl.DrawTerminal(dc, ToPoint(wire.A - wire.LowerBound), wire.Anode.ConnectedTo != null);
            ElementControl.DrawTerminal(dc, ToPoint(wire.B - wire.LowerBound), wire.Cathode.ConnectedTo != null);

            dc.Pop();
        }
コード例 #2
0
        private static Pen MapToSignalPen(Circuit.EdgeType Color)
        {
            switch (Color)
            {
            // These two need to be brighter than the normal colors.
            case Circuit.EdgeType.Red: return(new Pen(new SolidColorBrush(System.Windows.Media.Color.FromRgb(255, 80, 80)), 1.0));

            case Circuit.EdgeType.Blue: return(new Pen(new SolidColorBrush(System.Windows.Media.Color.FromRgb(20, 180, 255)), 1.0));

            default: return(ElementControl.MapToPen(Color));
            }
        }
コード例 #3
0
        private void ElementRemoved(object sender, Circuit.ElementEventArgs e)
        {
            ElementControl control = (ElementControl)e.Element.Tag;

            control.Element.LayoutChanged -= ElementLayoutChanged;
            wires.Children.Remove(control);
            symbols.Children.Remove(control);
            if (control.Selected)
            {
                RaiseSelectionChanged();
            }
        }
コード例 #4
0
        private void ElementLayoutChanged(object sender, EventArgs e)
        {
            Circuit.Element element = (Circuit.Element)sender;
            Circuit.Coord   lb      = element.LowerBound;
            Circuit.Coord   ub      = element.UpperBound;

            ElementControl control = (ElementControl)element.Tag;

            Canvas.SetLeft(control, lb.x + origin.x);
            Canvas.SetTop(control, lb.y + origin.y);

            control.Width  = ub.x - lb.x;
            control.Height = ub.y - lb.y;

            control.InvalidateVisual();
        }
コード例 #5
0
        private void ElementAdded(object sender, Circuit.ElementEventArgs e)
        {
            ElementControl control = ElementControl.New(e.Element);

            if (control is WireControl)
            {
                wires.Children.Add(control);
            }
            else if (control is SymbolControl)
            {
                symbols.Children.Add(control);
            }
            else
            {
                throw new InvalidOperationException("Unknown element type");
            }
            control.Element.LayoutChanged += ElementLayoutChanged;
            ElementLayoutChanged(control.Element, null);
        }
コード例 #6
0
 public void RemoveOverlay(ElementControl Element)
 {
     overlays.Children.Remove(Element);
     Element.Element.LayoutChanged -= ElementLayoutChanged;
 }
コード例 #7
0
 // Add/remove overlay element controls.
 public void AddOverlay(ElementControl Element)
 {
     overlays.Children.Add(Element);
     Element.Element.LayoutChanged += ElementLayoutChanged;
     ElementLayoutChanged(Element.Element, null);
 }
コード例 #8
0
 public void RemoveOverlay(ElementControl Element)
 {
     Overlays.Children.Remove(Element);
     Element.Element.LayoutChanged -= ElementLayoutChanged;
 }
コード例 #9
0
 // Add/remove overlay element controls.
 public void AddOverlay(ElementControl Element)
 {
     Overlays.Children.Add(Element);
     Element.Element.LayoutChanged += ElementLayoutChanged;
     ElementLayoutChanged(Element.Element, null);
 }