Пример #1
0
        DrawLabelBackground
        (
            DrawingContext oDrawingContext,
            GraphDrawingContext oGraphDrawingContext,
            FormattedText oFormattedText,
            Color oFormattedTextColor,
            Byte btBackgroundAlpha,
            Point oTextOrigin
        )
        {
            Debug.Assert(oDrawingContext != null);
            Debug.Assert(oGraphDrawingContext != null);
            Debug.Assert(oFormattedText != null);
            AssertValid();

            if (oFormattedText.Width == 0 || oFormattedText.Height == 0)
            {
                return;
            }

            // Note: Don't make the background any more opaque than the text, which
            // might be translucent itself.

            Color oBackgroundColor = WpfGraphicsUtil.SetWpfColorAlpha(
                oGraphDrawingContext.BackColor,
                Math.Min(btBackgroundAlpha, oFormattedTextColor.A));

            SolidColorBrush oBackgroundBrush = CreateFrozenSolidColorBrush(
                oBackgroundColor);

            Rect oBackgroundRectangle = WpfGraphicsUtil.GetFormattedTextBounds(
                oFormattedText, oTextOrigin);

            // Draw a rounded rectangle with a small amount of padding.

            const Int32 Padding = 1;
            const Int32 Radius  = 2;

            oBackgroundRectangle.Inflate(Padding, Padding);

            oDrawingContext.DrawRoundedRectangle(oBackgroundBrush, null,
                                                 oBackgroundRectangle, Radius, Radius);
        }