Майкл Янг. Программирование графики в Windows 95: векторная графика на языке Си++. Пер. с англ. под ред. В. Тимофеева. М., “БИНОМ”, 1997.  -  368 с.

 

Волей-неволей Windows 95 становится любимой средой не только российских программистов, но и большинства российских компьютерных издательств. “БИНОМ” поддержал это мнение выпуском очередной книги. В ней, как следует из названия, действительно рассматриваются основы графического программирования. Сделать хорошее графическое приложение для 32-разрядной среды  -  задача не из легких, особенно если решать ее на современном уровне с помощью векторной графики. И вот опытный программист, написавший к тому же ряд книг по языку Си++, М. Янг сделал читателю весьма заманчивое предложение  -  обучить его основам этого искусства. И весь его труд построен именно таким образом, чтобы читатель, обладающий необходимыми знаниями по языку Си++, параллельно с проработкой упражняясь на компьютере, смог постичь основы программирования графики для Win95. Графическое программирование в этой среде предполагает обращение ко многим графическим функциям WinAPI. Использование языка Си++ позволяет создавать эффективные приложения для работы с графикой.

 

Сама по себе книга уникальна тем, что не имеет себе равных ни по абсолютному, ни по относительному объему исходных текстов программ. Из 368 страниц 216 заняты сплошными “исходниками”, не считая отдельных примеров, приведенных в виде небольших фрагментов программ. Приводимые тексты снабжены многочисленными и полезными, но, к моему удивлению, не переведенными (!) комментариями. Таким образом, б’ольшая часть переводного издания занята не переведенным даже частично материалом. Традиционно же в компьютерной литературе комментарии в текстах программ принято переводить. При этом следует учесть, что к книге прилагается дискета, на которой все эти исходные тексты продублированы. По ходу обсуждения автор неоднократно ссылается на нее. В результате смысл включения в книгу такого количества идентичных текстов программ с комментариями на языке первоисточника, на мой взгляд, несколько потерян. Ведь прочесть и понять их сможет лишь человек, владеющий английским, но в таком случае он и всю книгу мог бы одолеть на языке оригинала!

 

Первые две главы предназначены для приступающих к изучению этой сложной темы. В них детально описаны первые шаги, необходимые для проектирования меню, пиктограммы, диалоговой панели, наглядно на примерах показано, как создать и прорисовать окно, отобразить на экране панель диалога. Читателю даются элементарные понятия, необходимые для программирования под Windows на Си++. Он познакомится с различными типами контекстов устройств, в том числе дисплейным, узнает, как задавать и изменять атрибуты рисунка, получит понятие о графических объектах, научится использовать элементарные графические функции WinAPI.

 

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

 

Много внимания автор, издавна являющийся одним из популяризаторов языка Си++, уделяет методам эффективного использования объектно-ориентированного программирования (ООП), улучшающим организацию графических программ и ускоряющим процесс их разработки. Он показывает, как практически использовать методы ООП, создавать классы и применять полиморфизм при разработке приложений на языке Си++. Эти разделы могут оказаться полезными и начинающему, и опытному программисту, приступающему к созданию ООП-приложений.

 

Основой, вокруг которой строится изложение, М. Янгом выбрана нетривиальная графическая программа: по ходу изложения она “достраивается”, совершенствуется и развивается. По мере создания и развития программы даются необходимые пояснения и комментарии. Не отступая от такого “эволюционного” подхода, автор последовательно предоставляет читателю несколько версий этой программы, давая наглядное представление о творческом процессе создания графического приложения.

 

Отдельная глава посвящена разработке программ, предназначенных для вывода на печать отображений графических объектов. М. Янг в деталях приводит “классическую” методику программирования на Си++ для печати графических изображений, в том числе масштабируемых.

 

Он раскрывает перед читателем тайны графических программ от начала до конца. Программа для проектирования графического объекта и его преобразования создана, нужный объект получен  -  как сохранить его? Автор предлагает сохранять его в расширенном метафайле, подробно обсуждая методику сохранения.

 

Известно, что функций WinAPI  -  великое множество, и выбор “нужного комплекта” при создании графического приложения представляет определенные трудности. М. Янг не только подобрал необходимый пакет таких функций, но и рассмотрел в деталях на конкретных примерах их характеристики и методику использования. А это, как считают профессионалы, дорогого стоит  -  ведь пока не “почувствуешь” иную нетривиальную функцию, не изучишь ее особенности настолько, что сможешь предсказать, как она себя поведет и чего от нее можно ожидать при работе программы, использовать ее практически невозможно.

 

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

 

Есть в книге отдельные терминологические неточности, связанные с неадекватностью перевода. Например, может вызвать некоторое удивление термин “индивидуальные линии” (с. 173). На отдельных страницах можно столкнуться даже с неким одушевлением программы: “...программа использует следующую методику...” (с. 209) и т. п.

 

В заключение скажу, что книга представляет несомненный интерес для читателей с различным уровнем подготовки. Новички могут пользоваться изданием как практическим пособием при изучении языка Си++ и освоении эффективных методов ООП для Windows 95, а профессионалы  -  как справочником по графическим функциям.

 

Телефон издательства “БИНОМ”: (095) 973-9063.            

 

Александр Чубуков

Версия для печати