private VectorGraphics.Primitives.Path CreateRoundRectHighlight( Context context, VectorGraphics.Types.Rectangle rect, double radius ) { VectorGraphics.Primitives.Path path = new VectorGraphics.Primitives.Path(); VectorGraphics.Paint.Color lightener = GetLightenerColor( context, null, 0 ); path.Add( new VectorGraphics.Primitives.Path.Move( new VectorGraphics.Types.Point( rect.X, rect.Y + rect.Height - radius ) ) ); path.Add( new VectorGraphics.Primitives.Path.Line( new VectorGraphics.Types.Point( rect.X, rect.Y + radius ) ) ); path.Add( new VectorGraphics.Primitives.Path.EllipticalArc( radius, radius, 0, false, true, new VectorGraphics.Types.Point( rect.X + radius, rect.Y ) ) ); path.Add( new VectorGraphics.Primitives.Path.Line( new VectorGraphics.Types.Point( rect.X + rect.Width - radius, rect.Y ) ) ); path.Pen = new VectorGraphics.Paint.Pens.SolidPen( new VectorGraphics.Paint.Color( lightener, 0.6 ), 1 ); return path; }
private static VectorGraphics.Primitives.Container CreateContainer( VectorGraphics.Renderers.Renderer renderer, int width, int height, bool balloon, Drawing.ColorTable colorTable ) { VectorGraphics.Paint.Color primaryColor = VectorGraphics.Renderers.GdiPlusUtility.Convert.Color( colorTable.PrimaryColor ); VectorGraphics.Paint.Color lightener = VectorGraphics.Renderers.GdiPlusUtility.Convert.Color( colorTable.GlossyLightenerColor ); VectorGraphics.Paint.Color borderColor = VectorGraphics.Paint.Color.Combine( primaryColor, lightener, 0.5 ); VectorGraphics.Paint.Color gradientStartColor = VectorGraphics.Paint.Color.Combine( primaryColor, lightener, 0.05 ); VectorGraphics.Paint.Color gradientEndColor = VectorGraphics.Paint.Color.Combine( primaryColor, lightener, 0.2 ); VectorGraphics.Factories.RoundedRectangle roundRectFactory = new VectorGraphics.Factories.RoundedRectangle(); VectorGraphics.Factories.SoftShadow softShadowFactory = new VectorGraphics.Factories.SoftShadow ( renderer, new VectorGraphics.Types.Point( 1, 1 ), 3, new VectorGraphics.Paint.Color( 0, 0, 0, 0.3 ) ); VectorGraphics.Types.Rectangle mainRect = new VectorGraphics.Types.Rectangle( 0, 0, width, height ); VectorGraphics.Primitives.Container container = new VectorGraphics.Primitives.Container(); double radius = 3; VectorGraphics.Primitives.Path shape = roundRectFactory.Create( mainRect, radius ); if( balloon ) { shape = new VectorGraphics.Primitives.Path(); shape.Add( new VectorGraphics.Primitives.Path.Move( new VectorGraphics.Types.Point( mainRect.X + radius, mainRect.Y ) ) ); shape.Add( new VectorGraphics.Primitives.Path.Line( new VectorGraphics.Types.Point( mainRect.X + radius * 2, mainRect.Y ) ) ); shape.Add( new VectorGraphics.Primitives.Path.Line( new VectorGraphics.Types.Point( mainRect.X - radius, mainRect.Y - radius * 7 ) ) ); shape.Add( new VectorGraphics.Primitives.Path.Line( new VectorGraphics.Types.Point( mainRect.X + radius * 9, mainRect.Y ) ) ); shape.Add( new VectorGraphics.Primitives.Path.Line( new VectorGraphics.Types.Point( mainRect.X + mainRect.Width - radius, mainRect.Y ) ) ); shape.Add( new VectorGraphics.Primitives.Path.EllipticalArc( radius, radius, 0, false, true, new VectorGraphics.Types.Point( mainRect.X + mainRect.Width, mainRect.Y + radius ) ) ); shape.Add( new VectorGraphics.Primitives.Path.Line( new VectorGraphics.Types.Point( mainRect.X + mainRect.Width, mainRect.Y + mainRect.Height - radius ) ) ); shape.Add( new VectorGraphics.Primitives.Path.EllipticalArc( radius, radius, 0, false, true, new VectorGraphics.Types.Point( mainRect.X + mainRect.Width - radius, mainRect.Y + mainRect.Height ) ) ); shape.Add( new VectorGraphics.Primitives.Path.Line( new VectorGraphics.Types.Point( mainRect.X + radius, mainRect.Y + mainRect.Height ) ) ); shape.Add( new VectorGraphics.Primitives.Path.EllipticalArc( radius, radius, 0, false, true, new VectorGraphics.Types.Point( mainRect.X, mainRect.Y + mainRect.Height - radius ) ) ); shape.Add( new VectorGraphics.Primitives.Path.Line( new VectorGraphics.Types.Point( mainRect.X, mainRect.Y + radius ) ) ); shape.Add( new VectorGraphics.Primitives.Path.EllipticalArc( radius, radius, 0, false, true, new VectorGraphics.Types.Point( mainRect.X + radius, mainRect.Y ) ) ); shape.Add( new VectorGraphics.Primitives.Path.Close() ); } else { shape = roundRectFactory.Create( mainRect, 3 ); } shape.Pen = new VectorGraphics.Paint.Pens.SolidPen( borderColor, 1 ); shape.Brush = new VectorGraphics.Paint.Brushes.LinearGradientBrush( gradientStartColor, gradientEndColor, mainRect.TopLeft, mainRect.BottomLeft ); container.AddBack( shape ); softShadowFactory.Apply( container ); return container; }
private VectorGraphics.Primitives.Path CreateRoundRectHighlight( VectorGraphics.Types.Rectangle rect, double radius ) { VectorGraphics.Primitives.Path path = new VectorGraphics.Primitives.Path(); VectorGraphics.Paint.Color glossyGlowLightenerColor = VectorGraphics.Renderers.GdiPlusUtility.Convert.Color( _colorTable.GlossyGlowLightenerColor ); path.Add( new VectorGraphics.Primitives.Path.Move( new VectorGraphics.Types.Point( rect.X, rect.Y + rect.Height - radius ) ) ); path.Add( new VectorGraphics.Primitives.Path.Line( new VectorGraphics.Types.Point( rect.X, rect.Y + radius ) ) ); path.Add( new VectorGraphics.Primitives.Path.EllipticalArc( radius, radius, 0, false, true, new VectorGraphics.Types.Point( rect.X + radius, rect.Y ) ) ); path.Add( new VectorGraphics.Primitives.Path.Line( new VectorGraphics.Types.Point( rect.X + rect.Width - radius, rect.Y ) ) ); path.Pen = new VectorGraphics.Paint.Pens.SolidPen( new VectorGraphics.Paint.Color( glossyGlowLightenerColor, 0.6 ), 1 ); return path; }