Как пишут и как устроен GUI в ОС? Важно: не как его придумать; нарисовать, а как написать!Как его пишут: на каких ЯП? Как это работает? Как его написать? Посоветуйте материалы для изучения. Заранее спасибо.
GUI это graphical user interface, графический пользовательский интерфейс. Если мы говорим не о интерфейсе в играх, а о стандартных окнах, кнопках чекбоксах и т.д., используется API applicationprograminterfaceapplication program interfaceapplicationprograminterface под названием GDI+. Он предоставляет набор функций для рисования всех элементов управления, а также нескоростной графики недляигрне для игрнедляигр. Эти функции предназначены для вызова из С/С++, хотя есть врапперы и с других языков.
В настоящее время GDI+ интегрирован в .NET Framework и вызывается, как через методы различных классов.
Пример работы с кнопками на языке C#, функция-враппер GDI+ - ControlPaint.DrawButton
GUI это graphical user interface, графический пользовательский интерфейс. Если мы говорим не о интерфейсе в играх, а о стандартных окнах, кнопках чекбоксах и т.д., используется API applicationprograminterfaceapplication program interfaceapplicationprograminterface под названием 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;
STAThreadSTAThreadSTAThread
static void Main
{
Application.RunnewForm1()new Form1()newForm1();
}
public Form1
{
_button2.Location = new Point0,button1.Height+100, _button1.Height + 100,b utton1.Height+10;
this.Click += Button2_Click;
this.Controls.Addbutton1_button1b utton1;
this.Controls.Addbutton2_button2b utton2;
}
private void Button2_Clickobjectsender,System.EventArgseobject sender, System.EventArgs eobjectsender,System.EventArgse
{
// Draws a flat button on button1.
ControlPaint.DrawButton</p><p>System.Drawing.Graphics.FromHwnd(button1.Handle),0,0,</p><p>button1.Width,button1.Height,</p><p>ButtonState.Flat</p><p> System.Drawing.Graphics.FromHwnd(_button1.Handle), 0, 0, </p><p> _button1.Width, _button1.Height,</p><p> ButtonState.Flat</p><p>System.Drawing.Graphics.FromHwnd(b utton1.Handle),0,0,</p><p>b utton1.Width,b utton1.Height,</p><p>ButtonState.Flat;
}
}