private void btnCopyAsImage_Click(object sender, RoutedEventArgs e) { if (gateCanvas.selected.Count > 0) { UIGates.IC ic = gateCanvas.CreateIC("(clipboard)", GateCanvas.SELECTED_GATES.SELECTED); GateCanvas tmp = new GateCanvas(ic, icl); tmp.Width = tmp.GetBounds(0, false).Width; tmp.Height = tmp.GetBounds(0, false).Height; BackgroundWorker bg = new BackgroundWorker(); bg.DoWork += (s2, e2) => { System.Threading.Thread.Sleep(500); // prop time // don't use wait on propagation because if there is a loop // it will loop forever }; bg.RunWorkerCompleted += (s2, e2) => { tmp.Mute = true; tmp.UpdateLayout(); tmp.UpdateWireConnections(); Clipboard.SetImage(tmp.CreateImage()); Grid1.Children.Remove(tmp); }; Grid1.Children.Add(tmp); bg.RunWorkerAsync(); } }
/// <summary> /// Replace the existing canvas with a new canvas, based on the IC given. /// This is similar to closing this window and replacing it with another window /// based on that IC instead. /// </summary> /// <param name="newgcic"></param> public void RefreshGateCanvas(UIGates.IC newgcic) { Grid1.Children.Remove(gateCanvas); gateCanvas.Circuit.Stop(); gateCanvas = new GateCanvas(newgcic, icl); gateCanvas.UndoProvider = (UndoRedo.UndoManager)Resources["undoManager"]; this.UnregisterName("gateCanvas"); this.RegisterName("gateCanvas", gateCanvas); Grid1.Children.Insert(0 /*Grid1.Children.Count - 4*/, gateCanvas); Grid.SetColumn(gateCanvas, 1); Grid.SetRow(gateCanvas, 1); _basedon = newgcic; if (!string.IsNullOrEmpty(newgcic.AbGate.Name)) { _filename = newgcic.AbGate.Name; spGates.ICName = newgcic.AbGate.Name; UpdateTitle(); } if (MyEditLevel == EditLevel.FULL || MyEditLevel == EditLevel.EDIT) { // monitor the clipboard to provide cut/copy/paste visibility gateCanvas.selected.ListChanged += (s2, e2) => { btnCopy.IsEnabled = gateCanvas.selected.Count > 0; btnCut.IsEnabled = gateCanvas.selected.Count > 0; btnCopyAsImage.IsEnabled = gateCanvas.selected.Count > 0; }; } if (_myEditLevel == EditLevel.FULL) { gateCanvas.Circuit.Start(); } gateCanvas.SetCaptureICLChanges(); gateCanvas.Zoom = slZoom.Value; gateCanvas.UpdateLayout(); gateCanvas.UpdateWireConnections(); }
/// <summary> /// Replace the existing canvas with a new canvas, based on the IC given. /// This is similar to closing this window and replacing it with another window /// based on that IC instead. /// </summary> /// <param name="newgcic"></param> public void RefreshGateCanvas(UIGates.IC newgcic) { Grid1.Children.Remove(gateCanvas); gateCanvas.Circuit.Stop(); gateCanvas = new GateCanvas(newgcic, icl); gateCanvas.UndoProvider = (UndoRedo.UndoManager)Resources["undoManager"]; this.UnregisterName("gateCanvas"); this.RegisterName("gateCanvas", gateCanvas); Grid1.Children.Insert(0 /*Grid1.Children.Count - 4*/,gateCanvas); Grid.SetColumn(gateCanvas, 1); Grid.SetRow(gateCanvas, 1); _basedon = newgcic; if (!string.IsNullOrEmpty(newgcic.AbGate.Name)) { _filename = newgcic.AbGate.Name; spGates.ICName = newgcic.AbGate.Name; UpdateTitle(); } if (MyEditLevel == EditLevel.FULL || MyEditLevel == EditLevel.EDIT) { // monitor the clipboard to provide cut/copy/paste visibility gateCanvas.selected.ListChanged += (s2, e2) => { btnCopy.IsEnabled = gateCanvas.selected.Count > 0; btnCut.IsEnabled = gateCanvas.selected.Count > 0; btnCopyAsImage.IsEnabled = gateCanvas.selected.Count > 0; }; } if (_myEditLevel == EditLevel.FULL) gateCanvas.Circuit.Start(); gateCanvas.SetCaptureICLChanges(); gateCanvas.Zoom = slZoom.Value; gateCanvas.UpdateLayout(); gateCanvas.UpdateWireConnections(); }
private void btnCopyAsImage_Click(object sender, RoutedEventArgs e) { if (gateCanvas.selected.Count > 0) { UIGates.IC ic = gateCanvas.CreateIC("(clipboard)", GateCanvas.SELECTED_GATES.SELECTED); GateCanvas tmp = new GateCanvas(ic, icl); tmp.Width = tmp.GetBounds(0, false).Width; tmp.Height = tmp.GetBounds(0, false).Height; BackgroundWorker bg = new BackgroundWorker(); bg.DoWork += (s2, e2) => { System.Threading.Thread.Sleep(500); // prop time // don't use wait on propagation because if there is a loop // it will loop forever }; bg.RunWorkerCompleted += (s2, e2) => { tmp.Mute = true; tmp.UpdateLayout(); tmp.UpdateWireConnections(); Clipboard.SetImage(tmp.CreateImage()); Grid1.Children.Remove(tmp); }; Grid1.Children.Add(tmp); bg.RunWorkerAsync(); } }