Как пишут и как устроен GUI в ОС? Важно: не как его придумать; нарисовать, а как написать!Как его пишут: на каких ЯП? Как это работает? Как его написать? Посоветуйте материалы для изучения. Заранее спасибо.
GUI это graphical user interface, графический пользовательский интерфейс. Если мы говорим не о интерфейсе в играх, а о стандартных окнах, кнопках чекбоксах и т.д., используется API (application program interface) под названием GDI+. Он предоставляет набор функций для рисования всех элементов управления, а также нескоростной графики (не для игр). Эти функции предназначены для вызова из С/С++, хотя есть врапперы и с других языков.
В настоящее время GDI+ интегрирован в .NET Framework и вызывается, как через методы различных классов.
Пример работы с кнопками на языке C#, функция-враппер GDI+ - ControlPaint.DrawButton
GUI это graphical user interface, графический пользовательский интерфейс. Если мы говорим не о интерфейсе в играх, а о стандартных окнах, кнопках чекбоксах и т.д., используется API (application program interface) под названием GDI+. Он предоставляет набор функций для рисования всех элементов управления, а также нескоростной графики (не для игр). Эти функции предназначены для вызова из С/С++, хотя есть врапперы и с других языков.
В настоящее время GDI+ интегрирован в .NET Framework и вызывается, как через методы различных классов.
Пример работы с кнопками на языке C#, функция-враппер GDI+ - ControlPaint.DrawButton
using System;
using System.Drawing;
using System.Windows.Forms;
public class Form1 : Form
{
private Button _button1 = new Button();
private Button _button2 = new Button();
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
public Form1()
{
_button2.Location = new Point(0, _button1.Height + 10);
this.Click += Button2_Click;
this.Controls.Add(_button1);
this.Controls.Add(_button2);
}
private void Button2_Click(object sender, System.EventArgs e)
{
// Draws a flat button on button1.
ControlPaint.DrawButton(
System.Drawing.Graphics.FromHwnd(_button1.Handle), 0, 0,
_button1.Width, _button1.Height,
ButtonState.Flat);
}
}