using Gtk; using System; class SharpApp : Window { Gdk.Pixbuf mute, min, med, max;// Дані для розташування у буфері Image image; // Зображення для виведення public SharpApp() : base("VScale") { SetDefaultSize(180, 150); SetPosition(WindowPosition.Center); DeleteEvent += delegate {Application.Quit();}; VScale scale = new VScale(0, 100, 1) // Шкала (від, до, крок) { Inverted = true }; scale.SetSizeRequest(35, 160); // Розміри шкали scale.ValueChanged += OnChanged; // Обробник події зміни стану try { mute = new Gdk.Pixbuf("mute.png"); // Завантаження зображень з файлів min = new Gdk.Pixbuf("min.png"); med = new Gdk.Pixbuf("med.png"); max = new Gdk.Pixbuf("max.png"); } catch { Console.WriteLine("Помилка зчитування зображень");} image = new Image(mute); Fixed fix = new Fixed();// Контейнер для розташування за координатами // верхнього лівого кута об'єкта fix.Put(scale,80, 20); // Вкладення шкали у контейнер fix.Put(image,80, 200); // Вкладення зображення у контейнер Add(fix); // Додавання контейнера у вікно ShowAll(); // Показ усіх елементів вікна } void OnChanged(object obj, EventArgs args) { VScale scale = (VScale) obj; double val = scale.Value; if (val == 0) {image.Pixbuf = mute;} else if (val < 33) {image.Pixbuf = min;} else if (val < 67) {image.Pixbuf = med;} else {image.Pixbuf = max;} } public static void Main() { Application.Init(); new SharpApp(); Application.Run(); } }