Smrf.NodeXL.Visualization.Wpf.GroupDrawer.TryDrawGroupRectangles C# (CSharp) Method

TryDrawGroupRectangles() public method

public TryDrawGroupRectangles ( IGraph graph, GraphDrawingContext graphDrawingContext, Visual &visual ) : System.Boolean
graph IGraph
graphDrawingContext GraphDrawingContext
visual Visual
return System.Boolean
    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);
    }