public override void Render(Node node, Context context) { ButtonNode button = node as ButtonNode; context.RoundedRectangle (0.5, 0.5, button.Width - 1, button.Height - 1, button.Rounding); if (button.Relief) { using (var lg = new global::Cairo.LinearGradient (0, 0, 0, button.Height)) { CreateGradient (lg, button.State, button.Opacity); context.Pattern = lg; context.FillPreserve (); } context.LineWidth = 1; context.Color = new Color (0.8, 0.8, 0.8, button.Opacity).ToCairo (); context.Stroke (); } }
static void CreateGradient(global::Cairo.LinearGradient lg, NodeState state, double opacity) { if (state.HasFlag(NodeState.Pressed)) { lg.AddColorStop(0, new Color(0.9, 0.9, 0.9, opacity).ToCairo()); lg.AddColorStop(1, new Color(1, 1, 1, opacity).ToCairo()); } else if (state.HasFlag(NodeState.Prelight)) { lg.AddColorStop(0, new Color(1, 1, 1, opacity).ToCairo()); lg.AddColorStop(1, new Color(0.95, 0.95, 0.95, opacity).ToCairo()); } else { lg.AddColorStop(0, new Color(1, 1, 1, opacity).ToCairo()); lg.AddColorStop(1, new Color(0.9, 0.9, 0.9, opacity).ToCairo()); } }
public override void Render(Node node, Context context) { ButtonNode button = node as ButtonNode; context.RoundedRectangle(0.5, 0.5, button.Width - 1, button.Height - 1, button.Rounding); if (button.Relief) { using (var lg = new global::Cairo.LinearGradient(0, 0, 0, button.Height)) { CreateGradient(lg, button.State, button.Opacity); context.Pattern = lg; context.FillPreserve(); } context.LineWidth = 1; context.Color = new Color(0.8, 0.8, 0.8, button.Opacity).ToCairo(); context.Stroke(); } }