void n\yKeys(unsigned char key. int x. int y)
{
switch(key) {
case 'q': exit(O);

case 's': whichPic = 1 - whichPic: break: // switch pixmaps // переключаем пиксельные карты

case 'r': pic[0].read(0.0.200,200): break: // grab a piece // захватываем фрагмент }

gl utPostRedisplayO;
}
//««««««««««« main »»»»»»»»»»»»>
void main(int argc. char **argv)
{
glutlnitC&argc. argv):
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB):
gl utIni twi ndowSi ze(screenwi dth. screenHeight):
glutlnitwindowPositionOO. 30):

glutCreatewindowC'Experiment with images"): // «Экспериментируем с изображениями»

glutKeyboardFunc(myKeys):
glutMouseFunc(myMouse);
glutMotionFunc(mouseMove):
glutDisplayFunc(myDisplay):
glutReshapeFunc(myReshape):

glClearColor(0.9f. 0.9f, 0.9f. 0.0): // background color // цвет фона

glClear(GL_C0L0R_BUFFER_BIT):

pi c[0].readBmpFi1e("CokeCan2.bmp"): // make a pixmap // создаем пиксельную карту

pi с[1].readBmpFi1e("Mandri11.bmp"): // make another one // создаем еще одну

glutMainLoopO:
}

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

10.2. Управление пиксельными картами карты Pic[0] и Pic[l], и в них загружаются два BMP-файла. Одно из этих изображений отображается в начальной растровой позиции. После щелчка левой кнопкой мыши рисование методом drawO осуществляется уже в позиции мыши. Если левая кнопка мыши удерживается в нажатом положении, то данная пиксельная карта рисуется снова и снова по мере движения мыши по экранному окну. Нажатие клавиши «s» осуществляет переключение между двумя рисуемыми таким способом пиксельными картами. При нажатии клавиши «г» осуществляется чтение методом read О всего, что нарисовано в области экрана размером 200 на 200 пикселов; эти данные помещаются.в массив pic[0], стирая его прежнее содержимое. По нажатию правой кнопки мыши экран очищается.


⇐ Предыдущая| |Следующая ⇒