コード例 #1
0
        public override void Draw(CircuitEditor editor, Context cr)
        {
            if (Selecting)
            {
                var size = editor.FromGridDistToWorld(SelectionSize);
                Console.WriteLine($"Pos: {editor.FromGridToWorld(SelectionStart)}, Size: {size}");
                cr.Rectangle(editor.FromGridToWorld(SelectionStart), size.X, size.Y);
                cr.SetSourceRGBA(0.1, 0.1, 0.3, 0.3);
                cr.Fill();
            }

            if (SelectedWires.Count > 0)
            {
                foreach (var wire in SelectedWires)
                {
                    var size = new Vector2d(10, 10);
                    var pos  = editor.FromGridToWorld(wire.Pos) - (size / 2);
                    cr.Rectangle(pos, size.X, size.Y);

                    var endpos = editor.FromGridToWorld(wire.EndPos) - (size / 2);
                    cr.Rectangle(endpos, size.X, size.Y);
                }
                cr.SetSourceRGB(1, 1, 1);
                cr.FillPreserve();
                cr.SetSourceRGB(0.1, 0.1, 0.1);
                cr.Stroke();
            }
        }
コード例 #2
0
 public override void Draw(CircuitEditor editor, Context cr)
 {
     if (Selecting)
     {
         var size = editor.FromGridDistToWorld(SelectionSize);
         Console.WriteLine($"Pos: {editor.FromGridToWorld(SelectionStart)}, Size: {size}");
         cr.Rectangle(editor.FromGridToWorld(SelectionStart), size.X, size.Y);
         cr.SetSourceRGBA(0.1, 0.1, 0.3, 0.3);
         cr.Fill();
     }
 }
コード例 #3
0
        public override void Draw(CircuitEditor editor, Context cr)
        {
            if (Selecting)
            {
                var size = editor.FromGridDistToWorld(SelectionSize);
                cr.Rectangle(editor.FromGridToWorld(SelectionStart), size.X, size.Y);
                cr.SetSourceRGBA(0.1, 0.1, 0.3, 0.3);
                cr.Fill();
            }

            if (SelectedWires.Count > 0)
            {
                foreach (var wire in SelectedWires)
                {
                    var size = new Vector2d(10, 10);
                    var pos  = editor.FromGridToWorld(wire.Pos) - (size / 2);
                    cr.Rectangle(pos, size.X, size.Y);

                    var endpos = editor.FromGridToWorld(wire.EndPos) - (size / 2);
                    cr.Rectangle(endpos, size.X, size.Y);
                }
                cr.SetSourceRGB(1, 1, 1);
                cr.FillPreserve();
                cr.SetSourceRGB(0.1, 0.1, 0.1);
                cr.Stroke();
            }

            if (SelectedGates.Count > 0)
            {
                foreach (var instance in SelectedGates)
                {
                    Rect r = editor.Scene.Gates.GetBounds(instance);
                    r = r.Rotate(instance.Position * CircuitEditor.DotSpacing, instance.Orientation);

                    var size  = new Vector2d(10, 10);
                    var hSize = size / 2;
                    cr.Rectangle(r.TopLeft - hSize, size.X, size.Y);
                    cr.Rectangle(r.TopRight - hSize, size.X, size.Y);
                    cr.Rectangle(r.BottomLeft - hSize, size.X, size.Y);
                    cr.Rectangle(r.BottomRight - hSize, size.X, size.Y);
                }
                cr.SetSourceRGB(1, 1, 1);
                cr.FillPreserve();
                cr.SetSourceRGB(0.1, 0.1, 0.1);
                cr.Stroke();
            }
        }