I tried it, it still doesn't work xaml: <diag:Diagram x:Name="diagram" AllowDrop="True" VerticalAlignment="Top" HorizontalAlignment="Left" DefaultShape="RoundRect" Behavior="Pan" PreviewMouseWheel="diagram_PreviewMouseWheel" GridSizeX="15" GridSizeY="15" RestrictItemsToBounds="InsideOnly" RightButtonActions="None" Bounds="-600,-600,1500,1500" MouseWheel="diagram_MouseWheel" NodeDoubleClicked="diagram_NodeDoubleClicked" DrawNode="diagram_DrawNode" BackBrush="Black" DrawForeground="diagram_DrawForeground" NodeModifying="diagram_NodeModifying" > </diag:Diagram> cs: private void diagram_DrawNode(object sender, DrawNodeEventArgs e) { if (e.Node != imageNode) return;
var graphics = e.Graphics; var clip = new CombinedGeometry( GeometryCombineMode.Exclude, new RectangleGeometry(imageNode.Bounds), new RectangleGeometry(overlayNode.Bounds)); var translate = new TranslateTransform(-imageNode.Bounds.X, -imageNode.Bounds.Y); graphics.PushTransform(translate); graphics.PushClip(clip); graphics.DrawRectangle(new SolidColorBrush(Color.FromArgb(120, 0, 0, 0)), null, imageNode.Bounds); graphics.Pop(); graphics.Pop(); }
private void diagram_DrawForeground(object sender, DiagramEventArgs e) { if (overlayNode == null) return; var graphics = e.Graphics; var clip = new CombinedGeometry( GeometryCombineMode.Exclude, new RectangleGeometry(diagram.Bounds), new RectangleGeometry(overlayNode.Bounds));
// var translate = new TranslateTransform(-diagram.Bounds.X, -diagram.Bounds.Y); // graphics.PushTransform(translate); graphics.PushClip(clip); graphics.DrawRectangle(new SolidColorBrush(Color.FromArgb(120, 0, 0, 0)), null, diagram.Bounds); //graphics.Pop(); graphics.Pop(); }
private void diagram_NodeModifying(object sender, NodeValidationEventArgs e) { diagram.InvalidateForeground(); }
I even commented out the method DrawNode, but it doesn't work either. private void diagram_DrawNode(object sender, DrawNodeEventArgs e) { //if (e.Node != imageNode) // return;
//var graphics = e.Graphics; //var clip = new CombinedGeometry( // GeometryCombineMode.Exclude, // new RectangleGeometry(imageNode.Bounds), // new RectangleGeometry(overlayNode.Bounds)); //var translate = new TranslateTransform(-imageNode.Bounds.X, -imageNode.Bounds.Y); //graphics.PushTransform(translate); //graphics.PushClip(clip); //graphics.DrawRectangle(new SolidColorBrush(Color.FromArgb(120, 0, 0, 0)), null, imageNode.Bounds); //graphics.Pop(); //graphics.Pop(); }
Is there something wrong?
|