using Cairo; using Gdk; using Gtk; class Area : DrawingArea { protected override bool OnDrawn(Context g) // малювання { g.MoveTo(new PointD(10, 200)); g.CurveTo(new PointD(10, 10), new PointD(10, 10), new PointD(200, 10)); g.CurveTo(new PointD(200, 200), new PointD(200, 200), new PointD(10, 200)); g.ClosePath(); g.Save(); // Збереження стану для його відновлення згодом Cairo.Gradient pat = new Cairo.LinearGradient(10, 200, 200, 100); pat.AddColorStop(0, new Cairo.Color(0, 1, 0, 1)); pat.AddColorStop(1, new Cairo.Color(1, 0, 0, 1)); g.SetSource(pat); // Використання ґрадієнту g.FillPreserve(); // Заповнення ґрадієнтом g.Restore(); // Відновлення стану g.SetSourceColor(new Cairo.Color(0, 0, 1)); // Колір контура g.LineWidth = 16; // Товщина контура g.Stroke(); // Наведення контура g.GetTarget().Dispose(); // Прибирання сміття g.Dispose(); return true; } } class OwnWindow : Gtk.Window // клас вікна застосунку { public OwnWindow() : base("Ґрадієнт") { Resize(210, 210); 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(); } }