Это перевод Why are icons multiples of 8 pixels in width? Автор: Реймонд Чен.
Значки всегда имеют размер кратный 8-ми пикселям. Это не просто потому, что компьютерщикам нравятся степени двойки.
Давным-давно видео-карты были чёрно-белыми (монохромными) или, если вам повезло: 16-ти цветными. Все эти режимы были планарными, механику которых мы обсуждали ранее. Теперь, представьте себе копирование растрового изображения на экран, когда и изображение и экран являются планарными. Если начальные координаты кратны 8, то растровое изображение может быть скопировано через команду блочного копирования. С другой стороны, если они были не точно кратны 8, то вас ожидало много веселья по смещению битов, чтобы вписать изображение на экран.
Это также является причиной для стиля окон CS_BYTEALIGNCLIENT. Когда установлен этот стиль, оконный менеджер будет пытаться установить позицию окна так, чтобы x-координата верхнего-левого угла клиентской области располагалась бы в точности по байтовой границе видео-памяти. Если вы работаете в видео-режиме 1 BPP (монохромный или 16-ти цветный), то это будет означать позиционирование x-координаты кратно 8. При таком позиционировании растровый рисунок клиентской области мог быть скопирован на экран быстрым блочным перемещением.
Если вы посмотрите на размеры диалоговых окон в Windows 95 или более ранней, то вы обнаружите, что все они имеют ширину, кратную 32 DLU. Поскольку 4 горизонтальных DLU равны в среднем ширине одного символа, то вы должны делать ваши диалоги шириной кратной 32, чтобы итоговый размер диалога был бы кратен 8 пикселям.
Размеры растровых изображений, кратные байтовым границам в видео-памяти, были важны для производительности в то время. Копирование блока пикселей обычно выполнялось в три главных шага: тонкая вертикальная полоска слева от изображения - в первый блок видео-памяти, затем копировалось основное изображение, кроме правой границы, и, наконец, тонкая вертикальная полоса справа копировалась в последний блок. Если вы были внимательны, вы могли даже видеть, как происходили эти три шага (как я уже говорил, машины в те дни были не так быстры). Если ваши изображения были выровнены на байтовую границу видео-памяти, то первый и второй шаги пропадали, потому что эти полосы имели нулевой размер.
Конечно же, в современном мире режимов 32 BPP, всё это давно потеряло смысл.
Комментариев нет:
Отправить комментарий
Можно использовать некоторые HTML-теги, например:
<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>
Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку.
Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.
Ваше сообщение может быть помечено как спам спам-фильтром - не волнуйтесь, оно появится после проверки администратором.
Примечание. Отправлять комментарии могут только участники этого блога.