TryDrawGroupRectangles ( IGraph graph, GraphDrawingContext graphDrawingContext, out Visual visual ) { Debug.Assert(graph != null); Debug.Assert(graphDrawingContext != null); AssertValid(); visual = null; GroupLayoutDrawingInfo oGroupLayoutDrawingInfo; if ( !GroupMetadataManager.TryGetGroupLayoutDrawingInfo( graph, out oGroupLayoutDrawingInfo) || oGroupLayoutDrawingInfo.PenWidth == 0 ) { return(false); } DrawingVisual oGroupRectangleDrawingVisual = new DrawingVisual(); using (DrawingContext oDrawingContext = oGroupRectangleDrawingVisual.RenderOpen()) { // Note: Don't try to use an alpha value of anything except 255 // for the rectangle colors. The rectangles overlap, and // transparent overlapping rectangles would have uneven opacities. Color oColor = GetContrastingColor(graphDrawingContext, 255, false); // Note that 1.0 is used where the GraphScale would normally be // used. Group rectangles don't get scaled. Pen oPen = CreateFrozenPen(CreateFrozenSolidColorBrush(oColor), oGroupLayoutDrawingInfo.PenWidth * 1.0, DashStyles.Solid); foreach (GroupInfo oGroupInfo in oGroupLayoutDrawingInfo.GroupsToDraw) { Rect oGroupRectangle; if (TryGetGroupRectangle(oGroupInfo, out oGroupRectangle)) { WpfGraphicsUtil.DrawPixelAlignedRectangle(oDrawingContext, null, oPen, oGroupRectangle); } } } visual = oGroupRectangleDrawingVisual; return(true); }