private void Button_Click(object sender, RoutedEventArgs e) { using (DiagramRenderLock diagramLock = new DiagramRenderLock(MyDiagram)) { DiagramNode node = new DiagramNode(MyDiagram); node.Bounds = new Rect(50, 50, 50, 50); node.Background = new SolidColorBrush(Colors.Azure); node.RadiusX = 15; node.RadiusY = 15; node.Drawer = new RoundedRectangleItemDrawer(); node.Label.Text = "AAZzzффффф"; node.Label.Foreground = new SolidColorBrush(Colors.DarkRed); node.Label.FontStyle = FontStyles.Italic; DiagramNode node1 = new DiagramNode(MyDiagram); node1.Bounds = new Rect(75, 200, 50, 50); node1.Background = new SolidColorBrush(Colors.Violet); node1.Label.Text = "wow"; LinearGradientBrush brush = new LinearGradientBrush(); brush.GradientStops.Add(new GradientStop(Colors.White, 0)); brush.GradientStops.Add(new GradientStop(Colors.Blue, 1)); brush.Opacity = 0.5; node1.Label.Background = brush; node1.Label.BorderPen = new Pen(Brushes.BlanchedAlmond, 2); //DiagramEdge edge = new DiagramEdge(MyDiagram); //edge.SourcePoint = new Point(100, 100); //edge.DestinationPoint = new Point(150, 150); //edge.Label.Text = "lololol"; //edge.Label.Background = brush; //DiagramEdge edge1 = new DiagramEdge(MyDiagram); //edge1.AnchoringMode = EdgeAnchoringMode.NodeToNode; //edge1.SourceNode = node; //edge1.DestinationNode = node1; } }
public void ZoomOut(Point point) { using (var diagramLock = new DiagramRenderLock(this)) { double oldScale = Scale; Rect oldViewport = Viewport; ZoomOut(); DoOffsetAfterZoom(point); } }
public void ZoomIn(Point point) { using (var diagramLock = new DiagramRenderLock(this)) { ZoomIn(); DoOffsetAfterZoom(point); } }
private void MoveViewport(Point mousePosition) { if (_rightButtonDownMousePosition == null) return; if (_diagram.Cursor != Cursors.SizeAll) _diagram.Cursor = Cursors.SizeAll; mousePosition.X += _diagram.XViewOffset - _baseXViewOffset; mousePosition.Y += _diagram.YViewOffset - _baseYViewOffset; using (DiagramRenderLock diagramLock = new DiagramRenderLock(_diagram)) { _diagram.XViewOffset = _baseXViewOffset + mousePosition.X - _rightButtonDownMousePosition.Value.X; _diagram.YViewOffset = _baseYViewOffset + mousePosition.Y - _rightButtonDownMousePosition.Value.Y; } }
protected void CheckOffsets(object sender, DoWorkEventArgs args) { BackgroundWorker worker = sender as BackgroundWorker; if (worker == null) return; if (!_leftButtonDown) return; while (true) { if (worker.CancellationPending == true) break; _diagram.Dispatcher.Invoke((Action)(() => { Rect viewport = _diagram.Viewport; Point currentPoint = _currentMousePosition.Value; Point currentScreenPoint = currentPoint.ToDisplayPoint(_diagram.Offset, _diagram.Scale); bool moveUp = false; bool moveDown = false; bool moveLeft = false; bool moveRight = false; double offsetX = viewport.Width * 0.05; double offsetY = viewport.Height * 0.05; if (currentPoint.X - viewport.Left < offsetX) moveLeft = true; if (viewport.Right - currentPoint.X < offsetX) moveRight = true; if (currentPoint.Y - viewport.Top < offsetY) moveUp = true; if (viewport.Bottom - currentPoint.Y < offsetY) moveDown = true; if (moveLeft || moveRight || moveUp || moveDown) { using (DiagramRenderLock locker = new DiagramRenderLock(_diagram)) { if (moveUp) _diagram.YViewOffset += offsetY; if (moveDown) _diagram.YViewOffset -= offsetY; if (moveLeft) _diagram.XViewOffset += offsetX; if (moveRight) _diagram.XViewOffset -= offsetX; } ProcessMouseMove(currentScreenPoint.ToViewPoint(_diagram.Offset, _diagram.Scale), false); } })); Thread.Sleep(100); } }