break; case 3:

red = 1.0; green = 1.0; blue = 1.0;

}

glutPostRedisplay ( );

}

void displayTriangle (void)

{

glClear (GL_COLOR_BUFFER_BIT);

glShadeModel (renderingMode);

/* Задается метод заполнения для треугольника. */ glColor3f (red, green, blue);

/* Задается цвет первых двух вершин. */ glBegin (GL_TRIANGLES) ; glVertex2i (280, 20); glVertex2i (160, 280); glColor3f (1.0, 0.0, 0.0);

/* Цвет последней вершины - красный. */ glVertex2i (20, 100); glEnd ( ); glFlush ( );

}

void reshapeFcn (GLint newWidth, GLint newHeight) { glViewport (0, 0, newWidth, newHeight);

glMatrixMode (GL_PROJECTION); glLoadldentity ( );

gluOrtho2D (0.0, GLfloat (newWidth), 0.0,

GLfloat (newHeight));

displayTriangle ( ); glFlush ( );

}

*

void main (int arge, char **argv)

{

GLint subMenu; // Идентификатор подменю,

glutlnit (Sarge, argv);

glutlnitDisplayMode (GLUT_SINGLE | GLUT_RGB); glutlnitWindowPosition (200, 200); glutlnitWindowSize (winWidth, winHeight); glutCreateWindow ("Пример создания подменю");

init ( ) ;

glutDisplayFunc (displayTriangle);

subMenu = glutCreateMenu (colorSubMenu); glutAddMenuEntry ("Синий", 1); glutAddMenuEntry ("Зеленый", 2); glutAddMenuEntry ("Белый", 3);

glutCreateMenu (mainMenu);

/* Создать основное всплывающее меню. */

glutAddMenuEntry ("Одноцветное заполнение", 1); glutAddMenuEntry ("Заполнение с интерполяцией цвета", 2);

glutAddSubMenu ("Цвет", subMenu);

/* Выбор опции меню с использованием правой кнопки мыши. */ glutAttachMenu (GLUT_RIGHT_BUTTON);

glutReshapeFunc (reshapeFcn);

glutMainLoop ( );

}

МОДИФИКАЦИЯ МЕНЮ GLUT

Если требуется заменить кнопку мыши, используемую для выбора опции меню, вначале нужно отменить текущую привязку к ней. Затем с опцией связывается новая кнопка. Для отмены используется команда

glutDetachMenu (mouseButton); Параметру mouseButton присваивается константа GLUT, определяющая левую, правую или среднюю кнопку, ранее привязанную к меню.

В существующем меню также можно менять опции. Например, опцию в текущем меню можно удалить с помощью команды

glutRemoveMenuItem (itemNumber) ; Здесь параметру itemNumber присваивается целое значение опции меню, которую нужно удалить.

Другие процедуры GLUT позволяют модифицировать имена или состояния элементов существующего меню. Например, эти процедуры можно использовать, чтобы изменить отображенное имя опции меню, номер пункта или опцию в подменю.

РАЗРАБОТКА ГРАФИЧЕСКОГО ПОЛЬЗОВАТЕЛЬСКОГО ИНТЕРФЕЙСА

Все современное прикладное программное обеспечение включает графические интерфейсы, составленные из окон на экране дисплея, пиктограмм, меню и других элементов, помогающих пользователю применить программное обеспечение к конкретной задаче. Специализированные интерактивные диалоги разрабатываются так, чтобы опции программирования выбирались с использованием знакомых терминов из определенной области, например, архитектурное проектирование, черчение, бизнес-графика, геология, экономика, химия или физика. В число других вопросов, требующих рассмотрения при разработке интерфейса пользователя, входят учет различных уровней подготовки, согласованность, обработка ошибок и обратная связь.


⇐ вернуться назад | | далее ⇒