using Cairo; using Gdk; using Gtk; class Area : DrawingArea { protected override bool OnDrawn(Context cr) // малювання { LinearGradient lg1 = new LinearGradient(0.0, 0.0, 350.0, 350.0); int count = 1; for (double j = 0.1; j < 1.0; j += 0.1) { if (count % 2 == 1) { lg1.AddColorStop(j, new Cairo.Color(0, 1, 0, 1)); } else { lg1.AddColorStop(j, new Cairo.Color(1, 0, 0, 1)); } count++; } cr.Rectangle(20, 20, 300, 100); cr.SetSource(lg1); cr.Fill(); LinearGradient lg2 = new LinearGradient(0.0, 0.0, 350.0, 0); count = 1; for (double i = 0.05; i < 0.95; i += 0.1) { if (count % 2 == 1) { lg2.AddColorStop(i, new Cairo.Color(0, 0, 0, 1)); } else { lg2.AddColorStop(i, new Cairo.Color(0, 1, 0, 1)); } count++; } cr.Rectangle(20, 140, 300, 100); cr.SetSource(lg2); cr.Fill(); LinearGradient lg3 = new LinearGradient(20.0, 260.0, 20.0, 360.0); lg3.AddColorStop(0.1, new Cairo.Color(1, 0, 0, 1)); lg3.AddColorStop(0.5, new Cairo.Color(1, 1, 0, 1)); lg3.AddColorStop(0.9, new Cairo.Color(1, 0, 0, 1)); cr.Rectangle(20, 260, 300, 100); cr.SetSource(lg3); cr.Fill(); lg1.Dispose(); lg2.Dispose(); lg3.Dispose(); return true; } } class OwnWindow : Gtk.Window // клас вікна застосунку { public OwnWindow() : base("Ґрадієнти") { Resize(340, 390); Add(new Area()); // додавання області малювання } protected override bool OnDeleteEvent(Event e) { Application.Quit(); return true; } } class Example { static void Main() { Application.Init(); OwnWindow w = new OwnWindow(); w.ShowAll(); Application.Run(); } }