Новые книги

Графические интерфейсы UNIX имеют давнюю историю. Первые программные разработки в этом направлении появились более 20 лет назад. Стандартом стала распределенная система X Window, которая позволяет рисовать на экране дисплея графические изображения, поддерживает концепцию окон и унифицирует работу с различными устройствами ввода-вывода на основе библиотеки Xlib. Для того чтобы облегчить программирование с применением Xlib (X11) и упростить создание пользовательских интерфейсов, существует несколько пакетов, из которых наиболее широко распространены X Toolkit Intrinsics (Xt), Athena (Xaw) и Motif (Xm). В последние годы появились два новых пакета: GTK+ и Qt, лежащих в основе популярных среди пользователей Linux графических интерфейсов GNOME и KDE.

Именно о программировании пользовательского интерфейса UNIX в системе X Window и будет идти речь в данной книге.
В той отрасли, где мы работаем, библиотека DirectDraw появилась довольно давно. Во всяком случае, за это время она успела доказать свои возможности, и о ней было написано несколько книг. Как обычно, эти книги отличаются по своему качеству. Однако в основном это были добротные учебники, которые (как и многие книги о компьютерах) были написаны за три месяца авторами, изучавшими предмет по ходу дела. В результате большинство этих книг содержит лишь подготовительный материал. Теперь, когда библиотека DirectDraw подросла и обрела свою репутацию (во всяком случае, она старше других компонентов DirectX), настало время уйти от основ и познакомиться с ее некоторыми нетривиальными возможностями.

Эта книга начинается с того, на чем другие книги обычно заканчивались. Мы поговорим об основах DirectDraw, но лишь в общих чертах. Читатель — опытный программист, но незнакомый с DirectDraw — сможет с ходу войти в курс дела. Затем мы перейдем к другим темам, столь же интересным, сколь и полезным.

Цель этой книги — научить вас работать с DirectDraw, а не предоставить некоторую «структурную основу» или нестандартный API, который бы выполнял за вас всю работу. Демонстрационные программы написаны на C++ и используют MFC, но совсем не для того, чтобы скрыть все технические подробности. С++ и MFC — превосходные инструменты, потому что с их помощью любое приложение можно написать несколькими разными способами. Примеры для этой книги были написаны так, чтобы при этом получались структурированные и удобные для чтения проекты, которые наглядно показывают, что и почему происходит в программе.

Помимо DirectDraw, во многих примерах используется библиотека DirectInput. Строго говоря, при программировании графики для Windows можно обойтись и без DirectInput, но ей все же стоит воспользоваться. Она работает быстрее традиционных средств ввода Windows и к тому же входит в DirectX, так что для работы с ней не потребуется никаких дополнительных SDK.

Детская. Графика

Советы начинающим

  • Большие рисунки помещайте в формате JPEG, маленькие в GIF.
  • Оптимизируйте палитру рисунков. Многие пользователи работают с разрешением 256 цветов. Лучше всего, если палитра всех рисунков укладывается в 216 цветов. Это также снижает размер файла.
  • Если графический файл получается довольно большим по размеру, лучше его просто порезать на куски и выводить как таблицу.
  • Если графическое изображение содержит текст, ни в коем случае не сохраняйте его как JPG, сохраняйте как GIF.
  • Контролируйте отсутствие прозрачности у баннеров в GIF формате. Они показываются на узлах с различными фонами.
  • Каждый из пользователей Интернет уже вполне привычно воспринимает появляющиеся почти на каждой странице картинки-мультфильмы, так называемые динамические, или анимационные (animated) GIFы. Что же необходимо для создания анимаций?
  • Известно, что оптимальной палитрой для GIF файлов, используемых в ВЕБ является т.н. "non-dither pallete" или "WEB-pallete", состоящая из 216 цветов. Часто она представляется в виде "цветового куба" со сторонами, состоящими из 6-ти градаций состовляющих цветов R, G, B. Эти градации распределяются с шагом в 20%. Наиболее простой способ привести свою картинку к такой палитре в Photoshop -- выполнить команду IMAGE > MAP > POSTERIZE со значением LEVELS=6. Данная операция означает, что вы ограничиваете число градаций (LEVELS) в каждом канале (R, G, B) до 6. Вы увидите (в окне INFO), что RGB составляющие принимают одно из 6 значений: 00, 51, 102, 153, 204, 255 -- это и есть 20-процентный сдвиг в рамках 256 градаций. Единственное условие -- перед преобразованием изображение должно быть переведено в цветовую модель RGB (MODE > RGB COLOR). Кстати, если вам вдруг понадобится получить "урезанные" палитры, применяемые в UNIX (5x5x5 или 4x4x4) -- достаточно соответственно поменять значение LEVELS на 5 или на 4. А поставив LEVELS=3, вы с большой долей вероятности получите вполне сносную картинку для предварительной подгрузки (LOWRES).
  • В стандартной ситуации цвет фона страницы задается тегом
    <BODY BGCOLOR="#??????">,
    где вместо ?????? подставляется цифровой код цвета в RGB составляющих. Однако, если этот цвет не входит в универсальную 216-цветовую палитру (ВЕБ-палитру), на системах с 256 цветами он будет представлен в виде смеси двух или более цветов (растеризован). С другой стороны, цвета 216-цветовой палитры далеко не всегда точно соответствуют искомому цвету. Выход из этой ситуации существует. Найдите среди цветов ВЕБ-палитры два наиболее близких к искомому. Создайте из них ма-а-а-аленький GIF'чик. Точки выбранных цветов можно расположить в шахматном порядке, или строчками, высотой в 1 пиксел. Используйте этот GIF файл, в качестве фона, тегом
    <BODY BACKGROUND="backgrnd.gif">.
    Практически на любом мониторе ваш фон (особенно, если два состаляющих цвета не представляют собой контрастное сочетание) будет смотреться, как "сплошной" цвет. По сути, вы сделали растеризацию за браузер, но гарантировали ее корректность и точность.
  • Компрессия в JPEG файлах.При больших значениях компрессии JPEG имеет тенденцию затемнять фоновый белый цвет картинки, что делат проблематичным ее применение на белом фоне.
  • Есть 5 фотошоп и есть русские шрифты... Эти шрифты прекрасно работают в других программах, но некоторые из них не хотят работать в фотошопе 5-ом, хотя прекрасно идут в 4-ом...
    Рyсские бyквы в Photoshop:
    Открываете регистр.
    • HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Nls \ CodePage Edit Value 1252.
    • Set it to "C_1251.NLS". (для NT, для 95 - cp_1251.nls)
    • Close Regedit and restart your Windows.
    Вот и все.