using Gtk; using System; class SharpApp : Window { Gdk.Pixbuf mute, min, med, max;// Дані для розташування у буфері Image image; // Зображення для виведення public SharpApp() : base("Scale") { SetDefaultSize(260, 150); SetPosition(WindowPosition.Center); DeleteEvent += delegate {Application.Quit();}; HScale scale = new HScale(0, 100, 1); // Шкала (від, до, крок) scale.SetSizeRequest(160, 35); // Розміри шкали 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, 20, 50); // Вкладення шкали у контейнер fix.Put(image,200, 50); // Вкладення зображення у контейнер Add(fix); // Додавання контейнера у вікно ShowAll(); // Показ усіх елементів вікна } void OnChanged(object obj, EventArgs args) { HScale scale = (HScale) 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(); } }