Example #1
0
        private void gradientToolStripMenuItem_Click(object sender, EventArgs e)
        {
            lastSelected = "gradient";
            OnPaintAction = cr =>
            {
                Gradient pat = new LinearGradient(0.0, 0.0, 0.0, 256.0);
                pat.AddColorStopRgba(1, 0, 0, 0, 1);
                pat.AddColorStopRgba(0, 1, 1, 1, 1);
                cr.Rectangle(0, 0, 256, 256);
                cr.SetSource(pat);
                cr.Fill();
                pat.Dispose();

                pat = new RadialGradient(115.2, 102.4, 25.6,
                                         102.4, 102.4, 128.0);
                pat.AddColorStopRgba(0, 1, 1, 1, 1);
                pat.AddColorStopRgba(1, 0, 0, 0, 1);
                cr.SetSource(pat);
                cr.Arc(128.0, 128.0, 76.8, 0, 2 * Math.PI);
                cr.Fill();
                pat.Dispose();
            };

            Invalidate();
        }
Example #2
0
        public override void DrawPie (double fraction)
        {
            // Calculate the pie path
            fraction = Theme.Clamp (0.0, 1.0, fraction);
            double a1 = 3.0 * Math.PI / 2.0;
            double a2 = a1 + 2.0 * Math.PI * fraction;

            if (fraction == 0.0) {
                return;
            }

            Context.Cairo.MoveTo (Context.X, Context.Y);
            Context.Cairo.Arc (Context.X, Context.Y, Context.Radius, a1, a2);
            Context.Cairo.LineTo (Context.X, Context.Y);

            // Fill the pie
            Color color_a = Colors.GetWidgetColor (GtkColorClass.Background, StateType.Selected);
            Color color_b = CairoExtensions.ColorShade (color_a, 1.4);

            RadialGradient fill = new RadialGradient (Context.X, Context.Y, 0,
                Context.X, Context.Y, 2.0 * Context.Radius);
            fill.AddColorStop (0, color_a);
            fill.AddColorStop (1, color_b);
	    Context.Cairo.SetSource (fill);

            Context.Cairo.FillPreserve ();
	    fill.Dispose ();

            // Stroke the pie
	    Context.Cairo.SetSourceColor (CairoExtensions.ColorShade (color_a, 0.8));
            Context.Cairo.LineWidth = Context.LineWidth;
            Context.Cairo.Stroke ();
        }