Я очень часто встречаю вопрос типа "Как удалить определенную строку из файла?". Народ совсем не хочет шевелиться, ведь так легко зайти на любой крупный форум по PHP, и в сроке поиска написать что-то типа "Удаление строк из файла". Пятерка результатов гарантирована. Итак, в первой части статьи мы как раз рассмотрим способ удаления определенной строки из текстового файла.
Для начала было бы совсем не плохо создать текстовый файл. Назовём его file.txt, который будет состоять из строк, которые мы будем удалять:
Затем создаём что-нибудь типа file.php, занимающий около 11 строк!
Сначала определимся, что для удаления определенной строки нам нужен её номер. Его мы будем передавать с идентификатором id: file.php?id=2 (удалим строку под номером ТРИ, так как исчисления элементов в массиве ведётся с нуля, но позже мы это сгладим).
- функция file() считывает весь файл в массив (каждая строка - это его элемент);
- $id-вычитает один из нашего идентификатора, так что 2 становится 2, а 3 - 3;
- unset($file[$i]) удаляет или обнуляет элемент массива (но только из памяти, т. е. виртуально:);
- implode() объединяет массив в одну строку. Это очень важно, так как если бы это опустили, наш файл бы похудел до бесполезной записи Array
include_once ("path") - функция включения дополнительного файла включаеться только один раз, те если есть необходимость включения файла в которомидет определение функций, класов или переменных и есть необходимость что бы они не переопределялись, то нужно использовать include_once().
include() - функция не проверяет был ли уже включен файл или нет, а подключает его снова. Т.е если в файле были инициализированны переменные, то они переопределяться.
require() - функция аналогичная include(), но если вызываемогофайла нет(например файла inc.php нет или мы укажем неверный путь) то require() остановит выполнение скрипта, а при include() выполнение продолжиться.
require_once() - функция аналогичная include_once(), но с замечаниями как и для recquire().
Вот вкратце все отличия этих функций, какими из них пользоваться - решать вам.
Итак, что нам понадобится. В первую очередь - Delphi 5-7 (у меня стоит 7-я версия, и весь код тестировался именно в этой версии). Это вызвано тем, что компонент TWebBrowser впервые "прописался" на вкладке Internet именно в 5-й версии (в 4-й его надо было устанавливать как компонент ActiveX).
Сначала нам надо перевести WebBrowser в режим редактирования. Для этого у каждого документа (согласно объектной модели это document) существует свойство DesignMode. Если установить его в 'On', то наша компонента автоматически переключается в режим редактирования, а если установить его в 'Off', то компонент вернется в режим просмотра.
Проверим это! Создадим новую форму, разместим на ней компоненту TWebBrowser и несколько компонент TSpeedButton. Затем напишем такой код:
Код:
Теперь по порядку о том, что мы написали. В событии OnCreate формы мы загружаем в браузер простую страницу (напомню, что протокол About позволяет загружать в браузер HTML строку). Это необходимо для того, чтобы в последующем мы могли обращаться к документу. Сразу после этого будет вызван обработчик события OnDocumentComplete. Но пока еще ничего не произошло. Внимательный читатель мог обратить внимание, что для перевода браузера в режим редактирования надо нажать кнопку 1. Editor - это экземпляр нашего документа (document). Его свойство DesignMode устанавливается в 'On'. Теперь наш редактор практически готов. Он уже умеет править текст, копировать/вырезать/вставлять текст и картинки, делать текст жирным/подчеркнутым/наклонным. Для этого есть соответствующие комбинации клавиш.
Ctrl + C Копировать
Ctrl + X Вырезать
Ctrl + V Вставить
Ctrl + B Жирный текст
Ctrl + I Наклонный текст
Ctrl + U Подчеркнутый текст
Ctrl + Z Отменить
Ctrl + Y Повторить
Ctrl + K Гиперссылка
Ctrl + F Найти
Ctrl + A Выделить всё
Ctrl + Left-Click Выделить блок
"Это, конечно, хорошо, что есть горячие клавиши, но мне не хотелось бы все их запоминать" - можете сказать вы. Хорошо. Тогда давайте разберем, как из Delphi заставить WebBrowser выполнять все эти действия. Для этого есть метод Command интерфейса IHTMLTxtRange (он описан в модуле MSHTML_TLB). Рассмотрим простой пример.
Код:
Сначала в этой процедуре создается объект Range. После этого вызывается метод Command:
Код:
cmdID – это строка идентификатор команды (в нашем примере 'bold' заставляет редактор переключаться между жирным и обычным начертанием текста); полный список команд смотри в приложении.
ShowUI – Show User Interface - показывать интерфейс пользователя (если таковой имеется, как правило это различные диалоговые окна). Если параметр равен False, то команда выполняется без предупреждения.
value – содержит дополнительную информацию в зависимости от команды.
Несколько слов об объекте Range. Помимо уже знакомого нам Command этот объект обладает еще рядом свойств и методов, некоторые из которых сейчас рассмотрим.
Text - Содержит текст выделения (без тегов HTML)
HTMLText - Полный текст выделения
Код:
procedure - Перемещает начальную позицию выделения на count символов вправо (если count<0, то влево), unit_-единицы измерения смещения (чаще всего используется 'character': 1 символ). При этом конечная позиция не смещается.
Код:
То же самое, только для конечной позиции выделения.
Код:
Вставляет HTML-строку
Код:
Отображает помощь по команде, указанной в cmdID
Пожалуй, на сегодня всё. Об остальных объектах (картинки, таблицы, элементы управления) поговорим в другой раз. Будут вопросы - пишите: [email=samum2000@mail15.com?subject=Question about visualhtml part1]samum2000@mail15.com[/email].
Приложение. Доступные команды:
BackColor - Устанавливает или получает цвет фона текущего выделения. Value должно содержать имя цвета или его шеснадцитиричный RGB эквивалент (например, #FFCC00).
Bold - Переключает начертание текста текущего выделения между полужирным и нормальным.
Copy - Копирует выделение в буфер обмена
CreateBookmark - Получает имя якоря или создает его для текущего выделения. Value - строка, содержащая имя якоря.
CreateLink - Получает URL ссылки или создает новую ссылку. Параметр Value должен содержать URL.
Cut - Вырезает текущее выделение в буфер обмена.
Delete - Очищает текущее выделение (удаляет всё его содержимое).
Find - Находит текст, заданный в параметре Value в текущем выделении.
FontName - Устанавливает шрифт для текущего выделения. Value содержит описание этого шрифта (как в теге FONT).
FontSize - Устанавливает размер шрифта. Value - число от 1 до 7 включительно.
ForeColor - Устанавливает цвет текста. Value должно содержать имя цвета или его шеснадцитиричный RGB эквивалент (например, #FFCC00)
FormatBlock - Устанавливает или получает форматирование текущего блока. Value может содержать теги-описатели.
Indent - Увеличивает отступ выделенного текста на одну единицу приращения
InsertButton - Перезаписывает идентификатор кнопки вместо текущего выделения. Value - строка, содержащая идентификатор кнопки.
InsertFieldset - То же для поля ввода.
InsertHorizontalRule - То же для горизонтальной полосы.
InsertIFrame - То же для встроеных фреймов (IFRAME).
InsertImage - То же для изображений.
InsertInputButton - То же для кнопки.
InsertInputCheckbox - То же для чекбоксов (checkBox).
InsertInputFileUpload - То же для элемента выбора файла.
InsertInputHidden - То же для скрытого поля (hidden)
InsertInputImage - То же для изображения.
InsertInputPassword - То же для поля ввода пароля.
InsertInputRadio - То же для радио-кнопок (Radio)
InsertInputReset - То же для кнопки reset.
InsertInputSubmit - То же для кнопки Submit.
InsertInputText - То же для поля ввода текста.
InsertParagraph - Вставляет новый раздел (абзац).
InsertOrderedList - Переключает стиль текущего выделения между списком и простым текстом.
InsertUnorderedList - То же самое.
InsertSelectDropdown - Записывает элемент Drop-down вместо текущего выделения. Value должно содержать идентификатор элемента.
InsertTextArea - То же для элемента TextArea.
Italic - Переключает начертание текста текущего выделения между наклонным и обычным.
JustifyCenter - Устанавливает выравнивание по центру для всего блока, в котором расположено текущее выделение.
JustifyLeft - Устанавливает выравнивание по левому краю для всего блока, в котором расположено текущее выделение.
JustifyRight - Устанавливает выравнивание по правому краю для всего блока, в котором расположено текущее выделение.
Outdent - Уменьшает отступ для всего блока, в котором расположено выделение, на одну единицу.
OverWrite - Переключается между режимами вставки текста и замены текста при вводе. Value: true - замена, false - вставка.
Paste - Вставляет текст из буфера обмена вместо текущего выделения.
Refresh - Обновляет текущий документ.
RemoveFormat - Удаляет из текущего фрагмента все теги форматирования
SelectAll - Выделяет все содержимое документа.
UnBookmark - Удаляет все закладки из текущего выделения.
Underline - Переключает начертание текста текущего выделения между подчеркнутым и обычным.
Unlink - Удаляет все гиперссылки из текущего выделенного фрагмента.
Unselect - Снимает выделение.
I. Вступление
II. Таблицы 1С и Excel.
III. Получение данных из Excel.
IV. Вывод данных в Excel.
V. Часто используемые методы для чтения/установки значений в Excel.
Вступление.
Многие знают, что Excel гораздо старше 1С. На мой взгляд, это очень успешный продукт, и нареканий о нем я не слышал. Excel прост и универсален. Он способен выполнять не только простые арифметические операции, но и сложные вычисления, построение графиков и т.п. Знаю примеры, когда организации до перехода на 1С вели часть бухгалтерии в Excel. Многие и сейчас параллельно используют две программы. В этой статье рассмотрим способы обмена данными между 1С и Excel.
Таблицы 1С и Excel.
Многие пользователи для удобства работы сохраняют таблицы 1С (печатные формы) в формате Excel (*.xls). После чего в полученном файле делают различные группировки, сортировки, вычисления и т.п. Связано это с тем, что в таблицах 1С нет такого огромного функционала как в таблицах Excel. Но в версии 1С 8.0 есть нововведения, делающих работу с таблицами более комфортной.
На сайте 1С (www.1C.ru) есть полезная программка, которая дает возможность открывать таблицы 1С в Excel и сохранять лист Excel как таблицу 1С. Это пригодится в том случае, если таблицу 1С не сохранили в формате Excel, а на том компьютере, где нужно открыть эту таблицу не установлена 1С. Да и постоянно помнить о том, что сохранить таблицу 1С нужно в формате Excel, не будет необходимости.
Полная информация о программе находится здесь.
Скачать программу можно здесь (архив zip 682 739 байт).
Замечание: В Excel разделителем дробной части считается символ ",". Поэтому перед сохранением таблицы 1С в формате Excel замените в ней другой разделитель (например ".") на ",". Иначе в Excel с этими числами не удастся произвести вычисления, или они вообще не будут отображаться как числа. Например, в таблице 1С "15.2" отобразится в Excel как "15.фев".
Получение данных из Excel.
Доступ из 1С к Excel производится посредством OLE. Например, код
позволит нам получить доступ через переменную "Эксель" к запущенному приложению Excel. А далее уже можно получить доступ к книге (файлу), листу и ячейке с данными. Далее примеры кода.
Открытие книги (файла):
ПутьКФайлу - полный путь к файлу книги Excel.
Выбор листа книги для работы с ним:
НомерЛиста - номер листа в книге, ИмяЛиста - имя листа в книге.
Получение значения ячейки листа:
НомерСтроки, НомерКолонки - номер строки и номер колонки, на пересечении которых находится ячейка.
Важно: не забывайте поле выполнения нужных действий добавлять код Эксель.Quit(); , иначе запущенный процесс останется незавершенным и будет занимать память и процессор компьютера.
Вывод данных в Excel.
Для вывода (выгрузки) данных в Excel необходимо либо открыть существующую книгу, либо создать новую, и выбрать рабочий лист для вывода данных. Открытие существующей книги описано выше, а для создания новой книги нужно использовать следующий код:
Так как при создании книги в Excel автоматически создаются листы (Сервис->Параметры->Общие->Листов в новой книге), то нужно лишь произвести выбор листа, с которым будет вестись работа:
либо добавить в книгу новый лист, если необходимо:
Следующим шагом будет установка значения ячейки:
НомерСтроки, НомерКолонки - номер строки и номер колонки, на пересечении которых находится ячейка.
И в конце нужно произвести запись созданной книги:
П
ПутьКФайлу - полный путь к файлу книги Excel (включая имя).
Важно: не забывайте, что в имени файлов не должно содержаться символов \ / : * ? " > < |.
Часто используемые методы для чтения/установки значений в Excel.
Эксель = СоздатьОбъект("Excel.Application");
Получение доступа к приложению Excel.
Мне приходится часто менять клиентов, потому что работаю удаленно. Сделал одному – иди к другому. А еще я продаю свои программы через Интернет. При имеющейся специфике работы, заметил одну странность: примерно в двадцати пяти процентов случаев, предприятие, оплатившее работу программиста и принявшее его работу, не пользуется ею.
Начну с примеров
Фирма, продающая компьютеры, купили внушительный комплект программного обеспечения, все своевременно оплатили, купили необходимое торговое оборудование... Мы, соответственно, все им установили и приготовились запускать. Остановились на этапе, когда сотрудники фирмы, ответственные за ввод в эксплуатацию нового программного комплекса, должны внести в информацию по имеющимся в отделах остаткам. Для справки – это примерно пара сотен наименований. Но на этом все работы по проекту остановились, потому что остатки не были внесены к намеченному сроку, ни через неделю после срока, ни через месяц. Не внесены они и до сих пор, хотя прошло уже пол года. Официально мы договорились, что клиент нам позвонит, когда сотрудники освободятся и найдут время внести остатки. Сами понимаете, на небольших фирмах менеджеры – по совместительству еще и продавцы, еще и грузчики, и кассиры…
Еще пример
Достаточно крупный комбинат решил автоматизировать учет обедов собственным сотрудникам в счет зарплаты. Систему подготовили, протестировали, поставили. Обучили их специалиста. Все как обычно. Недавно узнал, что конечный пользователь нашу систему не использует. Оказывается, по весьма банальной причине: на приобретение нового компьютера руководство не выделяет средств, а на имеющемся оказалось недостаточно мощности. В свое время мы указывали им на необходимость более мощного компьютера, но в силу не совсем понятных мне внутренних интриг, этот вопрос был замят на уровне IT-отдела. В результате, автоматизация стала не эффективной, и от использования новой программы решено было отказаться.
Третий пример
Производственная фирма заказала автоматизацию учета. От фирмы был назначен специалист – постановщик ТЗ и в будущем - внедренец. Работу сделали, сдали, провели обучение внедренца (на углубленное внедрение и обучение нами всех сотрудников не выделили бюджет). Я перезвонил клиенту через пол года, чтобы узнать, не было ли замечено каких-либо багов в работе системы. С удивлением услышал, что учет по-прежнему ведется в Excel-е, потому что на глубокое, самостоятельное освоение новой системы у сотрудников нет времени, а специалист, которого мы обучали, уволился…
Хотелось бы обобщить имеющийся, скромный опыт по таким случаям, и порассуждать на тему, когда автоматизация учета становится не эффективной по вине заказчика.
Уже из приведенных примеров можно сделать одно важное заключение: во всех трех случаях явно, что администрация не была заинтересована в результате. В первом – директор не захотел останавливать продажи даже не день, чтобы довести начатое до конца, во втором и третьем был урезан бюджет, и решили сэкономить там, где этого делать было нельзя.
1. Незаинтересованность руководства в результатах
Для меня всегда было загадкой, зачем руководство той или иной фирмы вообще тратится на автоматизацию, если отчетов в excel-е достаточно, и нет желания доводить начатое до конца? Чего дирекция хочет добиться? Дань моде? Надоел ноющий главбух? Решили, что что-то пора менять, но что менять – не выяснили? Стоит напомнить, что грамотно поставленная автоматизация учета в торгово-производственных фирмах способна увеличить прибыль и уменьшить затраты. Хорошая автоматизация окупается достаточно быстро, и уже скоро начинает приносить прибыль и экономию. Но если руководство не оценило перспектив автоматизации или, что еще хуже, считает, что новый стол из красного дерева топ-менеджеру важнее нового сервера сисадмину, то вряд ли на такой фирме автоматизация будет успешной.
2. Ограниченный бюджет
Как правило, из первого следует второе. Когда руководство не совсем отдает себе отчет в том, чего они ждут от автоматизации, тогда возникают идеи, наподобие: «а давайте пригласим студента, и он все сделает, как надо», или «давайте посадим главбуха на сервер»... Я, конечно, не против подработки студентов и не сомневаюсь в потенциале российского студенчества, но хочу лишь сказать о том, что для внедрения серьезной системы учета простого умения программировать очень мало. Хороший внедренец должен уметь просчитать возможные последствия выбора той или иной стратегии автоматизации. Это достаточно кропотливая работа, требующая, прежде всего, большого практического опыта, понимание не только специфики учета предприятия, но и его неочевидных нюансов. В конце концов, такая работа требует настойчивости, потому что часто решения внедренцев могут встретить сопротивление со стороны заказчика, и нужно уметь отстоять свои предложения, основываясь, опять же, на собственном опыте, защищая интересы сопротивляющегося клиента. Вряд ли какой-либо студент, понимающий, что занимается временным, не свойственным ему делом, способен на такое. Поэтому, считаю, что экономия на уровне исполнителя – это почти гарантия неудавшейся автоматизации.
Это же относится и к неоправданной экономии на оборудовании. Как правило, сбой системы происходит в самом слабом ее звене и в самый неподходящий момент… Помню, как у одного моего клиента, смотрящего «сквозь пальцы» на предложение обновить сервер, этот сервер вдруг однажды сгорел, когда бухгалтерия делала годовой отчет. Печально было то, что архивирование данных не велось должным образом, опять же, не смотря на рекомендации: директор считал покупку пишущего cd-room (в то время) – не особенно необходимыми затратами. Систему, конечно, восстановили. Но я помню, как бухгалтерии пришлось две недели работать чуть ли не по ночам, чтобы восстановить потерянные за год данные по первичным документам. Кстати, после этого случая руководство все-таки купило в то время жутко дорогой сервер с райд-массивом…
3. Тендер на откатах
Где-то встречал в сети примерную статистику, какой процент тендеров на IT услуги в России выигрывается за счет откатов ответственному лицу. Статистика – не утешительна. Печально, что на откаты попадают в основном крупные заказчики, где сумма договора внушительна, и руководство напрямую не занимается подбором исполнителя, а поручает это собственному специалисту, который не всегда бывает доволен уровнем своей заработной платы. Практика показывает, что при таком раскладе, все работы бывают выполнены в срок, все документы подписаны, но сотрудники фирмы остаются недовольны результатами и не могут использовать внедренную систему в планируемом объеме по разным причинам. Соответственно, руководство не имеет требуемой аналитической базы и начинает выяснять, в чем причина. Такие разбирательства затягиваются надолго, часто сопровождаются кадровыми движениями и, в конечном итоге, поисками того, кто бы систему довел до ума…
4. К вопросу о лидерах отрасли
Хотел бы привести еще один пример, достаточно типичный. Фирма готова тратить деньги на автоматизацию, но не сориентировалась на рынке IT-услуг и обратилась к кому-то очень известному. В результате затраты превысили все разумные пределы, а итог оказался не совсем ожидаемым, хотя, возможно, приемлемым с натяжкой.
К сожалению, это только при покупке автомобиля можно руководствоваться рекламными буклетами, и, если позволяют средства, выбирать самое последнее из модельного ряда. В сфере IT-услуг, как показывает практика, все далеко не так, особенно в сфере автоматизации на базе продуктов фирмы «1С» фирмами-франчайзи. Если исполнитель – не на уровне масштабов компании «Intel Corporation», то его раскрученность совсем может не соответствовать качеству предлагаемых им услуг, а объемы клиентской сети, требующей постоянного сопровождения, могут не позволить заниматься новым клиентом на должном уровне. На фоне этого, стоило бы вспомнить о небольших фирмах, менее раскрученных, а потому не выигравших тендер, которые были бы просто счастливы получить крупного заказчика IT-услуг, даже с меньшей суммой договора, и были готовы отдать все силы на то, чтобы клиент остался доволен. Амбиции небольших коллективов, уровень их специалистов и заинтересованность в результатах работы часто оказываются выше, чем у раскрученных, больших компаний. Небольшие фирмы не могут допустить в работе того, что позволят себе монополии, потому что любая неудача может грозить такой фирме банкротством.
Я назвал лишь четыре, пожалуй, основных фактора, когда автоматизация не достигает результатов, и присходит это, отчасти, по вине заказчика. Наверняка, имеются и другие причины, но корень проблем, на мой взгляд, следует искать, прежде всего, в неправильной позиции руководства компании, которая выражается или в непонимании, зачем нужна автоматизация, или в неправильно выбранной стратегии решения этого вопроса. Там, где решения принимаются трезво и взвешенно, где оценивается уровень специалиста, а не его раскрученность на рынке, где руководство четко понимает, чего оно ждет от автоматизации в итоге – там все будет нормально, чего всем и желаю…
В данной статье рассмотрены принципы, помогающие компилятору Delphi генерировать более оптимальный с точки зрения скорости код. Если Вы не хотите вникать в подробности, в конце статьи есть «свод правил», которые рекомендуется соблюдать при написании программ.
Компилятор Delphi относится к разряду оптимизирующих. Но насколько качественно проводится оптимизация? Как «помочь» компилятору создать более быстрый код? Давайте разберемся с этим на экспериментах.
Оптимизация константных выражений
Пример 1:
С точки зрения оптимизации код можно упростить еще на этапе компиляции до
Но написанный выше листинг преобразуется в
С одной стороны компилятор не «сообразил», что значение переменной «a» можно преобразовать в константу и сложить с другой константой (которая, заметим, подставлена именно как константа) на этапе компиляции, с другой стороны был применен весьма хитрый трюк с LEA (об этом ниже). Тем не менее, код
в любом случае быстрее и короче.
Пример 2:
Скомпилированный код будет выглядеть
А ведь значение, присвоенной переменной «а» являлось константой и наш пример можно было бы переписать как:
Пример 3:
После компиляции получаем:
Т.е. компилятор преобразовал код так, как он был написан, а ведь можно было бы просто записать:
Оптимизация алгебраических выражений
Пример 4:
После компиляции эти переменные будут удалены, причем с предупреждением
Пример 5:
Код скомпилируется как есть! Таким образом мы обманули компилятор псевдо использованием переменных. Delphi не исправляет нашей «кривости», поэтому эта задача ложится исключительно на плечи программиста.
Пример 6:
Данный код можно оптимизировать до
И этого Delphi за нас не сделает.
Пример 7:
В данном примере первую строчку можно безболезненно удалить, что Delphi делать умеет.
Пример 8:
В данном случае можно избавится от одной операции умножения, присвоив значение выражения a*b временной переменной. Анализ ассемблерного листинга показывает, что компилятор именно так и поступает. Тем не менее, поменяв второе подвыражение на ((b*a)>0), компилятор принимает выражения за разные и генерирует умножение для обоих случаев, не смотря на то, что результат одинаков.
Оптимизация арифметических операций
Сложение и вычитание
Применение инструкции LEA вместо ADD позволяет производить сумму 3х операндов (двух переменных и одной константы) за один такт. Трюк заключается в том представление ближних указателей эквивалентно их фактическому значению, поэтому результат, возвращенный LEA равен сумме ее операндов. При возможности Delphi производит такую замену.
Деление
Операция деления требует гораздо больше тактов процессора, нежели умножение, поэтому замена деления на умножение может значительно ускорить работу. Существуют формулы, позволяющие выполнять такое преобразование. Тем не менее, Delphi не использует такую оптимизацию. Деление на степень двойки можно заменять сдвигом вправо на n бит, но даже в этом случае получаем следующий код:
Здесь учитывается особенность самой операции div – округление в большую сторону. Поэтому, если можно пренебрегать округлением, используйте c:=a shr 1 вместо с:=a div 2.
Умножение
Умножение на степень двойки можно заменять сдвигами битов. Delphi заменяет умножение сдвигами при умножении на 4,8,16 итд. При умножении на 2 производится суммированием переменной с собой.
Умножать на 3,5,6,7,8,10 и т. д. можно и без операции умножения – расписав выражение по формуле (a shl n)+a, где n – показатель степени двойки. Например, при умножении на 3 n=1. Delphi при возможности прибегает к этому трюку. Заметим, операнд LEA умеет умножать регистр на 2,4,8, что также при возможности используется компилятором. Например, умножение на 3 преобразуется в инструкцию
Оптимизация case of
Анализ скомпилированного кода показывает, что Delphi проводит утрамбовку дерева. Т.е. значения case сортируются и выбор нужного элемента производится при помощи двоичного поиска.
В случае, если элементы case of выстраиваются в арифметической прогрессии, компилятор формирует таблицу переходов. Т.е. создается массив указателей с индексами элементов, поэтому выбор нужно элемента выполняется за одну итерацию независимо от количества элементов.
Оптимизация циклов
Разворачивание циклов – не производится. Разворачивание циклов весьма спорный момент в оптимизации, поэтому принять грамотное решение может только человек. Delphi не производит разворачивания ни больших, ни маленьких циклов.
Слияние циклов – не производится. Если два цикла, следующие друг за другом имеют одинаковые границы итерационной переменной, разумно оба цикла объединить в один.
Вынесение инвариантного кода за пределы цикла – не выносится. Наиболее распространенный недочет – условие цикла записывается как:
Delphi будет при каждой итерации вызывать метод count, вычитать из результата 1 и потом уже сверять. Настоятельно рекомендуется переписывать подобный код как
Весь код VCL написан с нарушением этого правила. Очевидно, что проще подобного рода оптимизацию встроить в компилятор, нежели переписывать VCL :)
Замена циклов с предусловием на циклы с постусловием – производится. Циклы с постусловием имеют главное преимущество над другими видами циклов (с предусловием и с условием в середине) – они содержат всего одно ветвление. Delphi производит такую замену.
Замена инкремента на декремент – не производится. Более того, даже декрементный цикл компилируется в неоптимальный код, т.к. не используется флаг ZF. Вместо этого происходит сравнивание значения регистра с 0.
Удаление ветвлений – не производится.
Вывод:
1. Не используйте переменные для временного хранения констант или обязательно объявляйте «магические» числа как const, либо подставляйте в код непосредственные значения
2. Неиспользуемыми объявлениями и присвоениями можно безболезненно пренебрегать – Delphi умеет их вычищать.
3. Внимательно следите за использованием переменных, в частности лишним присвоениям их значений друг другу. Такого рода оптимизации Delphi делать не умеет.
4. Используйте свернутые математические выражения. (например, (3*a - a) /2 упрощается до a). Delphi не умеет упрощать математические выражения. (Да и что говорить, даже MathCAD не всегда грамотно умеет делать такие преобразования).
5. Не используйте конструкции типа a:=10*sin(45*pi/180); Delphi не вычислит эту константу на этапе компиляции, напротив, будет послушно вызывать sin и pi по ходу выполнения программы! В случае, если угол является переменной, по крайней мере pi можно заменить константой 3,1415...
6. Delphi прекрасно справляется с выражениями, полностью составленных из констант – они вычисляются на этапе компиляции.
7. Внимательно следите за условиями и их границами. Компилятор Delphi не умеет обнаруживать заведомо ложных условий. Также он не умеет удалять заведомо лишние условия. Например, (a>0) and (a<15616) and (a<>0)
8. Если в условии несколько раз проверяется одно и тоже выражение, следите, чтобы оно было выражено во всех конструкциях одинаково. В противном случае скомпилированный код будет не оптимален. Например, if ((a*b)>0) and ((a*b)<1024) then... При перестановке во втором случае b*a смысл выражения не изменится, но код будет иметь уже на одну операцию умножения, а две. Можно временно присвоить проверяемое выражение временной переменной, а затем уже проверять полученное значение.
9. Сообщение «Combining signed and unsigned types – widened both operands» сообщает не только о потенциальной ошибке – также вследствие преобразования мы теряем производительность. Например, z – объявлена как ineteger. условие if z>$abcd6123 then z:= $abcd6123; несмотря на его правильность вызовет данное предупреждение. Сгенерированный код будет, выполнять преобразования величин до 64-х бит, и дальнейшее уже сравнение 64-х битных операндов. Если изменить тип z на cardinal, мы избавимся от предупреждения и получим 3 строки кода, вместо 8 !
10. Delphi умеет оптимизировать сложение, умножение и частично деление. При делении на степень двойки, если не важно округление до большего, рекомендуется пользоваться shr 1 вместо div 2.
11. В case of при возможности используйте элементы, расположенные в арифметической прогрессии. Тем не менее, даже при невыполнении данного условия мы получим качественный код после утрамбовки дерева.
12. Выносите инвариантный код за тело цикла. Наиболее частая ошибка – for i:=1 to length(str) do... Дело в том, что при каждой итерации будет вызываться функция length, что пагубно скажется на производительности. Рекомендуется длину строки заранее присвоить переменной. Также не включайте в тело цикла код, заведомо не зависящий от изменения итерационной переменной.
Сравнивая Delphi с компиляторами Visual C++, WATCOM, Borland C++ (тестирование данных компиляторов приведено в [1]) приходим к выводу, что Delphi по своим оптимизирующим свойствам аналогичен Borland C++ (а кто сомневался? ;) ). Учитывая, что Borland C++ по итогам сравнения оказался последним, делаем несложный вывод. Весьма печален и тот факт, что большинство кода VCL написано с точки зрения «красоты» кода, а не его оптимальности с точки зрения скорости. Например, не соблюдается правило 12.
Часто работая в Фотошоп, приходится выполнять целый ряд постоянно повторяющихся операций. Такие операции выстраиваясь определенным образом, образуют цепочку команд - макропоследовательностей. Чтобы не повторять последовательность одних и тех же команд снова и снова, можно задействовать инструменты автоматизации. Одним из таких инструментов является Actions.
Автоматизация работы в Photoshop.
Часто работая в Фотошоп, приходится выполнять целый ряд постоянно повторяющихся операций. Такие операции выстраиваясь определенным образом, образуют цепочку команд - макропоследовательностей. Чтобы не повторять последовательность одних и тех же команд снова и снова, можно задействовать инструменты автоматизации. Одним из таких инструментов является Actions. Action - это записанный набор команд, которые можно быстро повторить. За такими макропоследовательностями также можно закреплять клавиатурные сокращения, то есть для их выполнения достаточно нажать клавишу или сочетание клавиш.
Для работы с Actions используется одноименная палитра. Чтобы увидеть эту палитру, следует выполнить команду Window>Actions или нажать клавишу F9.
Стандартные Actions
По умолчанию в Photoshop уже есть стандартный набор записанных команд, поэтому списки последовательно выполняющихся команд можно создавать самостоятельно, а можно воспользоваться уже готовыми. Например, используя стандартный макрос для создания виньетки (Vignette), достаточно выделить область на изображении и нажать кнопку его запуска.
Таким образом, все макропоследовательности состоят из команд, которые являются последними ступеньками в раскрывающемся списке.
Для удобства работы, макропоследовательности объединяются в наборы - Sets. Например, можно создать набор, в котором будут собраны макросы для работы с текстом, для создания различных текстур и т.д. По умолчанию в Photoshop есть набор Default Actions.
Палитра Actions содержит наборы различных последовательностей. Чтобы их увидеть, необходимо щелкнуть на треугольнике, расположенном слева от названия набора. После этого перед вами появится список действий, любое из которых может быть выполнено. Если вы хотите увидеть, из каких операций состоят действия, то следует щелкнуть на треугольнике, расположенном слева от них.
Внизу палитры расположены кнопки, позволяющие управлять действиями - создавать новые, запускать и останавливать запись и т.д.
Просмотрите все предлагаемые Actions на изображении с небольшим разрешением (на нем макрокоманды будут выполняться быстрее). После такого просмотра можно сформировать свою палитру, оставив понравившиеся элементы и удалив те, которые вам никогда не пригодятся. Можно также изменить названия, чтобы стало понятнее, где какая возможность скрывается.
Если какое-нибудь действие вам очень понравилось, то посмотрите, как оно было сделано. Для этого следует обратиться к палитре Actions и, раскрыв все списки, просмотреть последовательность выполняемых операций.
Лучше всего не только просмотреть, как выполнялись операции, но и попытаться добиться такого же эффекта, проделав самостоятельно все действия, особенно если вы неопытный пользователь. Это поможет лучше узнать программу, а также ознакомиться с возможностями, которые она предоставляет. Кроме того, в процессе работы можно будет изменить некоторые параметры, подобрав их для конкретного изображения.
Создание собственных макрокоманд
Можно не только пользоваться готовыми макрокомандами, но и создавать свои собственные.
Приведем пример ситуации, в которой они могу оказаться полезными. Предположим, вы хотите выложить фотографии в интернете. Прежде чем публиковать их в сети, нужно выполнить цветокоррекцию и уменьшить размер. Допустим, вы решили делать цветокоррекцию в режиме Lab Color.
Рассмотрим список действий, которые необходимо выполнить с каждым изображением:
1) Выполнить команду Image>Mode>Lab Color, чтобы перевести снимок в цветовое пространство Lab Color.
2) Повысить четкость изображения, для чего нужно перейти на палитру Channels, выделить канал Lightness и применить к нему фильтр Sharpen>Unsharp Mask. Благодаря тому, что фильтр применяется в канале освещенности, можно повысить резкость изображения, не затрагивая цветовую составляющую.
3) Улучшить цвета на изображении, для чего нужно выделить цветовой канал b, вызвать окно редактирования кривых, выполнив команду Image>Adjustments>Curves или же используя сочетание клавиш CTRL+M, и изменить форму кривой. Чем круче график кривой, тем более контрастным становится изображение в канале, и тем более насыщенными становятся цвета на снимке.
4) Выделить цветовой канал a и проделать те же действия с изменением формы кривой.
5) Наконец, нужно изменить размер изображения, используя команду Image>Image Size.
Если после этого отобразить палитру History, можно увидеть, что пришлось выполнить целый ряд команд и действий, чтобы обработать фотографию. Эти действия нужно было бы повторять с каждой следующей фотографией, которую вы хотите выложить в интернете.
Задачу можно существенно упростить, используя Actions. Вернемся к исходному изображению, используя палитру History, и создадим собственный макрос. Сначала создадим новую группу для хранения макросов. Для этого нужно нажать кнопку Create New Set в нижней части палитры Actions.
В окне New Set введим название набора команд. Создадим в новой группе первый макрос, нажав кнопку Create New Action. В появившемся окне New Action выберем название макроса и клавишу, при нажатии которой он будет запускаться, например, F11. Для вызова макропоследовательностей можно использовать клавиши F2-F12, а также их сочетания с клавишами CTRL и Shift.
Для начала записи необходимо нажать кнопку Record в нижней части палитры Actions. Теперь любая команда, выполненная в Photoshop, будет запоминаться до тех пор, пока вы не остановите запись макроса.
Скроем палитру Actions, чтобы она не мешала, и повторим выполненные ранее действия: переведем изображение в Lab Color, увеличим резкость, изменим цветопередачу и уменьшим размер изображения при помощи команды Image Size.
После этого вернемся на палитру Actions и остановим запись, нажав кнопку Stop Playing/Recording. В списке нашего макроса можно увидеть записанную последовательность команд. Также рядом с названием макроса отображается горячая клавиша, которая выбрана для его запуска.
Чтобы проверить действие макроса, вернемся к исходному изображению, используя палитру History, и нажмем горячую клавишу, которую вы выбрали для выполнения макроса. Можно убедиться, что все действия выполняются автоматически и довольно быстро. Макрос также можно запускать, нажимая кнопку Play Selecтion в нижней части палитры Actions, если предварительно выделить его в списке макрокоманд.
Записав макрос, посмотрите, как макрокоманда сработает на другой фотографии. Откройте изображение в Photoshop и снова запустите макрос горячей клавишей. Как вы можете убедиться, макрос работает.
Таким образом, благодаря макросам на подготовку фотографий для публикации в интернете может уходить гораздо меньше времени. Достаточно нажать горячую клавишу - и можно сохранять изображение.
Сохранение макрокоманд
В ряде случаев, например, при переустановке системы или при необходимости использовать созданные ранее макросы на другом компьютере, возникает необходимость сохранить Actions. Такая возможность предусмотрена в Photoshop.
Actions нельзя сохранять по отдельности, только в наборах. Поэтому для сохранения макропоследовательностей выделите на палитре Actions тот набор, в который они входят, после чего нажмите миниатюрную кнопку, расположенную в верхней правой части палитры (под кнопкой для сворачивания палитры) и выберите команду Save Actions. Если при этом будет выделен не набор, а отдельный макрос, эта команда будет неактивна.
Наборы макросов сохраняются в файлы с расширением ATN. Для загрузки сохраненного ранее набора в Photoshop необходимо щелкнуть по той же кнопке на палитре Actions и выбрать команду Load Actions.
Инструмент Batch
В Photoshop есть еще одно средство для автоматизации, которое удобно использовать вместе с Actions. Это - инструмент пакетной обработки Batch. С его помощью можно применить макропоследовательность к группе файлов, даже не открывая их в Photoshop.
Приведем простой пример использования этого инструмента. Предположим, необходимо перед публикацией фотографий в интернете защитить свое авторское право. Для этого можно добавить на фотографии какой-нибудь текст, например, адрес сайта.
Для начала запишем в макрос все действия, которые необходимо выполнить. Создадим новый Action и начнем запись. Макрос будет состоять из трех действий: добавление на изображение текста, сохранение изображения в формате JPEG и закрытие исходного файла. После выполнения этих операций остановим запись макроса.
Выполним команду File>Automate>Batch. В окне Batch необходимо установить настройки пакетной обработки файлов. В разделе Play выбирается группа, в которую сохранен макрос и его название.
В разделе Source необходимо указать путь к папке, содержащей исходные файлы. Если установить флажок Include All Subfolders, то будут обработаны и файлы, которые находятся во вложенных папках.
В разделе Destination устанавливаются параметры сохранения файлов. Если выбрать в этом списке вариант None, то файлы не будут сохраняться автоматически. Вместо этого Photoshop будет выдавать запрос на сохранение каждого файла. При выборе варианта Save and close файлы будут сохранены в ту же папку, где хранятся исходные изображения.
Для того чтобы файлы были автоматически сохранены, нужно выбрать в списке Destination вариант Save and close. При выборе варианта Folder появляется возможность указать папку для сохранения обработанных файлов. Кроме этого, можно переименовать их, используя маску. Название файла может включать исходное имя, представленное строчными или заглавными буквами, дату выполнения операции в разных форматах, порядковый номер, букву алфавита, расширение.
Флажок Override Action Save As Commands нужно использовать осторожно. Если он установлен, то файлы будут сохранены только в том случае, если операция сохранения является одним из шагов макроса.
Для запуска пакетной обработки необходимо закрыть окно Batch, нажав кнопку OK. После этого файлы будут один за другим открываться в Photoshop, к ним будут применяться заданные операции, после чего они будут закрываться и сохраняться.
Batch и Actions - это очень полезные инструменты Photoshop, которые могут сэкономить не один час времени. Кроме этого, Actions могут стать хорошим пособием для изучения программы - загрузите в Photoshop наборы макропоследовательностей, созданные опытными пользователями, и пошагово разберите, как они работают.
Не всегда хорошая программа стоит много денег. Не которые бесплатные программы, например, такие как VirtualDub или 7-Zip стали более популярными, чем их платные аналоги. Создание таких программ начинается с простого энтузиазма людей, которые хотят сделать вещь полезную всем. А результат работы целой команды людей всегда оказывается успешным.
3D-редактор Blender 2.45
Не всегда хорошая программа стоит много денег. Не которые бесплатные программы, например, такие как VirtualDub или 7-Zip стали более популярными, чем их платные аналоги. Создание таких программ начинается с простого энтузиазма людей, которые хотят сделать вещь полезную всем. А результат работы целой команды людей всегда оказывается успешным.
Так случилось и с программой трехмерной графики Blender. Это ещё один пример коллективной работы многих людей. И сейчас Blender является полноценным бесплатным 3D-редактором.
Внешний вид всех программ для работы с трехмерной графикой очень похож. По этому производители коммерческих пакетов для работы с 3D выпускают специальные брошюры, где подробно разъясняются отличия в «горячих клавишах» и инструментах управления сценой между их программой и приложением, с которого они хотят переманить пользователя.
Программисты, сделавшие Blender, не ставят перед собой цель заработать деньги, и им не нужно подстраиваться под тех, кто раньше работал в другом 3D-редакторе. Поэтому, открывая для себя Blender, работе с трехмерной графикой приходится учиться заново.
Необычный внешний вид Blender говорит о том, что разработчики создавали свой проект «с нуля», не привязываясь к внешнему виду прочих программ для работы с трехмерной графикой. В какой-то мере это было правильное решение, ведь только так можно было создать удобный и в то же время принципиально новый интерфейс. Казалось бы, что можно придумать удобнее нескольких окон проекций и панели с настройками объектов?
Удобнее может быть только возможность гибкой настройки интерфейса под нужды каждого пользователя. В Blender реализована технология, благодаря которой внешний вид программы изменяется до неузнаваемости. Изюминка интерфейса Blender состоит в том, что в процессе работы над трехмерной сценой можно «разбивать» окно программы на части. Каждая часть – независимое окно, в котором отображается определенный вид на трехмерную сцену, настройки объекта, линейка временной шкалы timeline или любой другой режим работы программы.
Таких частей может быть неограниченно много – все зависит от разрешения экрана. Но сколько бы окошек ни было создано, они никогда не пересекутся между собой. Размер одного зависит от размера остальных, то есть если пользователь увеличивает размер одной части, размер соседних уменьшается, но никаких "накладываний" окон друг на друга не происходит. Это невероятно удобно, и тут создателям коммерческих приложений стоило бы посмотреть в сторону Blender, чтобы взять новшество на заметку.
Еще одна сильная сторона программы – хорошая поддержка «горячих клавиш», при помощи которых можно выполнять практически любые операции. Сочетаний довольно много, и запомнить все сразу тяжело, однако их знание значительно ускоряет и упрощает работу в Blender.
Таким образом, сложным интерфейс программы кажется только с непривычки. На самом же деле, инструменты Blender расположены очень удобно. Для того чтобы это понять, нужно поработать в программе какое-то время, привыкнуть к ней.
Для создания трехмерных моделей используются полигональные и NURBS-поверхности. Имеются в Blender и инструменты сплайнового моделирования. Создание 3D-объектов производится также с использованием кривых Безье иB-сплайнов.
Инструментарий Blender столь универсален, что позволяет воссоздавать даже очень сложные органические формы. Для этой цели можно использовать метаболы и технологию «трехмерной лепки» с помощью виртуальных кистей. Редактирование формы трехмерной модели с помощью кистей производится примерно так же, как это делается в Maya. Вносить изменения в геометрию можно в режиме симметрии, что особенно важно при моделировании персонажей.
В программе можно создавать обычную анимацию, а также работать над персонажной оснасткой, строить скелет и выполнять привязку костей к внешней оболочке. Трехмерный редактор работает с прямой и инверсной кинематикой.
В программе предусмотрена и возможность работы с частицами. Система частиц может быть привязана к любому трехмерному объекту. Поток частиц управляется с помощью направляющих кривых, эффектов ветра и завихрений. Кроме этого, влияние на частицы может определяться как окрашивание, в зависимости от силы воздействия на них. Есть вариант проверить, как частицы будут отражаться от движущейся трехмерной поверхности, или заставить их подчиняться законам гравитации. С помощью статической системы частиц можно даже моделировать волосы.
Blender включает в себя симулятор флюидов, благодаря которому в программе можно моделировать «текучие» эффекты жидкостей. Нужно отметить, что эта разновидность эффектов присутствует далеко не во всех 3D-редакторах, например, в 3ds Max нет инструментов для моделирования текучих флюидов.
Создать реалистичную анимацию особенно сложно, если необходимо имитировать физически точное поведение тел. В Blender есть инструменты для просчета поведения тел в определенных условиях. В режиме реального времени можно просчитать деформацию мягких тел, а затем «запечь» ее для экономии ресурсов и оптимизации визуализации анимации. Физически точное поведение может быть определено также и для упругих тел, с последующим «запеканием» измененных параметров в анимационные кривые.
Что касается визуализации, то и тут возможности Blender на высоте. Можно рассчитывать на поддержку рендеринга по слоям, на получение эффектов смазанного движения и глубины резкости (depth of field). Также поддерживается "мультяшный" рендеринг и имитация глобального освещения (ambient occlusion). Вместе с программой удобно использовать бесплатный движок визуализации YafRay, который может похвастаться работой с HDRI, возможностями просчета каустики и глобального освещения. Есть и другие подключаемые визуализаторы, например, Indigo.
В Blender-сообществе – был выпущен первый 3D-мультфильм, полностью созданный при помощи этой программы. Короткометражный фильм Elephants Dream создавался в течение полугода командой из шести аниматоров и других специалистов, которые постоянно работали в офисе компании Montevideo, поддерживающей проект. Приложить свою руку к созданию мультфильма могли все желающие, помогая основной команде разработчиков удаленно, через интернет.
Целью проекта было показать, что Blender является полноценным 3D-редактором, который с успехом может использоваться не только студентами и школьниками в целях обучения, но и профессионалами, работающими в команде над производством сложных проектов.
Одной из особенностей проекта Elephants Dream стало то, что в интернете был выложен для свободной загрузки не только сам фильм, но и все исходные материалы, которые использовались при его создании: сцены, текстуры и т.д.
После успеха Elephants Dream CG-энтузиасты, работающие в Blender, создали ещё один анимационный проект - фильм Peach. В нем аниматоры обращают внимание общественности на другие сильные стороны Blender, которые не удалось показать в первом фильме. В частности, это касается средств для работы с мехом и шерстью. И Peach стал "забавным и пушистым".
Blender – это отличный инструмент для трехмерного моделирования и анимации. Вне всякого сомнения, у этой программы есть будущее, она постоянно совершенствуется и обрастает новыми возможностями.
Настройки по умолчанию в Кореле не очень удобны. В любом графическом редакторе всегда хочется иметь как можно больше рабочего пространства. Настройки по умолчанию хороши лишь для изучения редактора, так как все руководства, справка и книги написаны под них. Когда же всё изучено и опробовано, можно настроить интерфейс «под себя». А некоторые опции просто необходимо скорректировать для комфортной работы.
Настраиваем сами Corel Draw.
Настройки по умолчанию в Кореле не очень удобны. В любом графическом редакторе всегда хочется иметь как можно больше рабочего пространства. Настройки по умолчанию хороши лишь для изучения редактора, так как все руководства, справка и книги написаны под них. Когда же всё изучено и опробовано, можно настроить интерфейс «под себя». А некоторые опции просто необходимо скорректировать для комфортной работы.
Для настройки интерфейса обычно используют меню Customization. Но в этой статье часто будет использоваться ещё один способ. Заключается он в том, что элементы интерфейса можно перетаскивать, зажав клавишу Alt, если при перетаскивании воспользоваться сочетанием Ctrl+Alt то перемещаемые элементы дублируется. Чтобы просто удалить элемент достаточно кликнуть на нем правой кнопкой мыши и в появившемся контекстном меню выбрать Customize>Toolbar Item>Delete. Сами «бары» перетаскиваются за двойную линию с левого или верхнего края.
Настройка внешняя.
Удаляем всё лишнее.
В верхней части интерфейса находятся Menu Bar (стандартные File, Edit, View и т.д.), Standard toolbar (панель, где находятся пиктограммы New, Open, Save...) и Property Bar (панель свойств, где устанавливаются параметры страницы, единицы измерения и прочие параметры документа). Menu Bar имеет привычное для большинства Windows приложений расположение, поэтому можно оставить его без изменений. Сэкономить место, здесь можно разместив Standard toolbar и Property Bar в один ряд, что станет возможно, если удалять с Standard toolbar. Лишние элементы, начиная, справа это выпадающее меню масштаба (zoom level), которое дублируется при выбранном Zoom Tool`е, затем кнопки «Access the Corel Graphics Community Web site» и «Start Corel applications», кнопки импорта и экспорта заменят легко запоминающиеся сочетания Ctrl+I и Ctrl+E. Всем знакомы такие сочетания как Ctrl+Z и Ctrl+Shift+Z, соответственно кнопкам со стрелочками «Undo» и «Restore» не место в новом интерфейсе. Опять же копирование/вставка – стандартные во всех приложениях Ctrl+C/X/V, да и в контекстном меню они присутствуют, так что тоже можно смело удалять. В общем, что оставить в Standard toolbar`е и оставлять ли его вообще дело индивидуальное, главное поставить его вряд с Property Bar`ом, что расширит рабочую область аж на 32 пиксела. Беспокоится о неправильных действиях и удалении чегото нужного сильно не стоит. Стандартные панели можно вернуть к прежнему виду в меню Tools>Customization>Command Bars, выделив нужную и нажав кнопку Reset. Либо через контекстное меню Customize>[Toolbar Name]>Reset to Default. Сбросить же все настройки на дефолтные если вдруг ваши эксперименты совсем выйдут из под контроля можно стартовав CorelDRAW с зажатой клавишей F8. То что находится внизу называется Status Bar и по умолчанию занимает неоправдано много места, показывая такие ненужные вещи как позиция курсора, доступные команды для инструментов и свойства объектов которые дублируются на панели свойств. Удалив все лишнее можно разместить вряд Object Information, Object Detalis, Fill Color и Outline color таким образом уменьшив размер панели состояния вдвое.
Ну и наконец немного расширить рабочую область можно отключив линейки, двойной клик и в появившемся окне снять галочку Show Rulers, существенный минус это отсутствие возможности вытягивать из них направляющие (Guidelines) и выставлять нулевые координаты в нужное место. Как вариант можно вынести кнопку включения/отключения линеек в какое-нибудь удобное место, находится она в меню Tools>Customization>Commands выпадающем списке View и называется Rulers.
Панель инструментов (Toolbox).
Та часть интерфейса, в которой расположены инструменты (Pick, Zoom, Shape, Bezier Tools и т.д.) интерактивные эффекты (Blend, Transparency, Envelope и т.д.) и прочее необходимое в работе и есть Toolbox или панель инструментов. По умолчанию она расположена неподвижно в крайней левой части окна и все инструменты расположены в один столбик, а некоторые объеденены в группы. Такой порядок не очень удобен опытному пользователю и уж тем более профессионалу или векторному маньяку.
Расположение в два столбика более практично и удобно, с этого и следует начать – перетащить Toolbox за верхний край со стандартного места в свободную область и растянуть до расположения инструментов в два столбца. Теперь руководствуясь собственным опытом и манерой работы нужно выставить инструменты в нужном порядке. Например Shape Tool можно вынести отдельно от группы и расположить рядом с Pick Tool`ом, также с инструментом Hend, а в выпадающих группах подвинуть наиболее используемые инструменты ближе к левому краю.
Чтобы новая панель выглядела аккуратней можно убрать верхнюю часть с названием и крестиком закрытия, для этого нужно кликнуть на панели правой кнопкой мыши, в контекстном меню выбрать Customize>Toolbox Toolbar>Properties... и в появившемся окне снять галочку «Show title when toolbar is floating».
Докеры (Dockers).
Особенностью интерфейса CorelDRAW является то что многие полезные функции и эффекты реализованы в виде докеров – панелей по умолчанию открывающихся справа. Там им самое место, вот только открывать каждый раз нужный докер не очень удобно, располагаются они в разных частях меню, хотя почти все их можно найти в меню Window>Dockers и на многие уже назначены сочетания клавиш. Наиболее удобный выход держать их открытыми, только в свернутом состоянии, так они будут расположены в нужном порядке удобными вкладками и при надобности разворачиваться одним кликом и так же легко сворачиваться. Определившись с наиболее удобным порядком (чтобы чаще используемые были выше) нужно поочередно открыть их через меню Window>Dockers. После этих действий правая часть экрана будет занята набором удобных закладок.
При желании расположить их можно и не привязывая к экрану, перетаскиваются они также как и другие элементы. В «плавающем» состоянии докеры представляют собой отдельные окошки, напоминающие аналогичные в «Адобовских» продуктах, которые так же легко сворачиваются и объединяются в группы.
Палитру цветов так же можно расположить более удобно, горизонтально например или в виде той же плавающей панели, форма и место расположения практически ничем не ограничиваются.
С принципом настройки интерфейса и некоторыми вариантами модификации, думаю, все понятно, она на то и кастомизация чтобы каждый мог изменить рабочее пространство на удобное ему. Теперь о настройках внутренних.
Настройка внутренняя.
Горячие клавиши.
Здесь каждый вправе сам решать что нужнее всего и достойно назначения клавиш.
В меню Tools>Customization>Commands во вкладке Shortcut Keys назначить свое сочетание клавиш можно любой функции. Совет: при установке горячих клавиш включите режим Navigate to conflict on Assign это позволит не допустить повтора уже существующих сочетаний. И ещё один важный совет: многим в Corel`е не хватает аналога функции Hand Tool в Photoshop`е и Illustrator`е, которой можно перемещаться по рабочей области зажав пробел не отрываясь от основных действий и не переключая инструментов. Такая функция присутствует, но по умолчанию не задействована, исправить ситуацию можно назначив горячую клавишу инструменту Pan (можно тот же пробел) который находится в меню Tools>Customization>Commands в выпадающем списке View.
Опции.
Пройдясь по опциям можно настроить некоторые параметры, сделав работу еще более удобной и продуктивной, начнем по порядку: Tools>Options (Ctrl+J)>Workspace>General тут можно установить количество шагов отката (Undo levels) для основных операций (Regular) и операций с растрами (Bitmap effects), примерные значения 50-100 и 5-10 соответственно.
Тут же можно отключить звуки (снять пометку с Enable sounds). Вкладка Display интересна опцией Enable node Tracking знакомой по ранним версиям CorelDraw (напомню: при активном инструменте Pick Tool и наведении на узлы он превращается в Shape Tool, таким образом можно скруглять углы прямоугольников и перемещать узлы не переключаясь на шейпер). Опция удобная и многим привычная, но не всегда востребованная, а лазить каждый раз в опции для ее включения не очень удобно. Альтернатива есть: в уже знакомом меню Tools>Customization>Commands нужно выбрать в выпадающем списке Edit, найти опцию Tracking и вытащить ее в удобное место на рабочей области или назначить ей сочетание клавиш. Теперь активация функции Node Tracking займет считанные секунды.
Далее во вкладке Edit следует снять галочку с опции Edit Auto-center new PowerClip contents, эта опция размещает объект в центре контейнера поверклипа, что нужно очень редко и если уж возникла такая необходимость, решается предварительным выравниванием объектов клавишами «C» (по вертикали) «E» (по горизонтали).
Следующая вкладка обязательная к посещению Memory, тут следует увеличить объем оперативной памяти используемой приложением со стандартных 25% до 50-75% в зависимости от объема доступной памяти.
Во вкладке Text>Quick Correct нужно снять галочку с одной из самых надоедливых функций CorelDRAW «Capitalize first letter of sentence» которая всюду при наборе текста делает первую букву предложения заглавной, что совершенно не требуется в большинстве случаев.
Часто CorelDRAW импортирует файлы в формате EPS в виде растровых объектов либо не импортирует вообще, для корректного импорта необходимо использовать фильтр «EPS, PS, PRN – PostScript», можно конечно выбирать его вручную в диалоговом окне импорта в выпадающем меню Files of type, но проще назначить его фильтром по умолчанию. Для этого в меню Global > Filters в списке List of active filters нужно выделить нужный фильтр и кнопкой Move Up поднять его выше фильтра «EPS - Encapsulated PostScript». Теперь нужный фильтр будет отвечать за импорт *.eps файлов постоянно.
Ну вот пожалуй и все основные и нуждающиеся в корректировке опции. На последок можно отметить некоторые возможности рассчитанные скорей на любителя нежели необходимые в работе. В меню Customization>Commands в выпадающем списке Status Bar можно найти такие функции как Time, которая как ясно из названия показывает время, Memory Allocated, которая проинформирует о занятой открытыми файлами памяти, а также индикатор статуса привязки Snap Status, и еще ряд подобных мелочей. Их можно расположить как например в том же Status Bar так и назначать горячие клавиши, после нажатия которых информация выведется рядом с курсором.
Node Color Coding.
По умолчанию отключенное нововведение CorelDRAW X3 (похоже, не всегда корректно работает), из название понятно – цветовое выделение узлов, т.е. подсвечивает узлы с разными свойствами (cusp, smooth, simmetrical) своим цветом. Кроме того, выделяется «начальный» узел, что в работе с блендами весьма полезно.
Включается через реестр (Пуск>Выполнить...>regedit):
в ветке
HKEY_CURRENT_USER > Software > Corel > CorelDRAW > 13.0 > CorelDRAW > Application Preferences > Base Tool Pref
присваиваем параметру
"NodeColorCoding"
значение "1".
сохраняем с расширением .reg, и запускаем, после подтверждения функция включится.
Как вы видите CorelDRAW крайне гибкий по части настроек и кастомизации. И каждый не поленившийся потратить часок другой на ковыряние опций и настройку интерфейса без сомнения сэкономит уйму рабочего времени впоследствии и превратит стандартный редактор в индивидуально заточенный инструмент.
Эта статья не инструкция по изготовлению фальшивых печатей. Здесь пойдёт речь о том, как нарисовать макет, из которого можно будет сделать настоящую печать. Изготавливается она путем вырезания клише из специальной пластмассы. Так как клише вырезается в макете не должно быть видимых контуров - только заливки, а то лазерный резец пройдёт два раза и испортит заготовку.
Рисуем Круглую Печать.
Эта статья не инструкция по изготовлению фальшивых печатей. Здесь пойдёт речь о том, как нарисовать макет, из которого можно будет сделать настоящую печать. Изготавливается она путем вырезания клише из специальной пластмассы. Так как клише вырезается в макете не должно быть видимых контуров - только заливки, а то лазерный резец пройдёт два раза и испортит заготовку.
И так начинаем рисовать.
1. Рисуем окружность с нажатым Ctrl - так она получится окружностью, а не эллипсом.
Назначаем (не снимая выделения, на панели опций) нужный размер нашей окружности - к примеру, 50 миллиметров. Дублируем (Ctrl+D) или копируем (Ctrl+C, Ctrl+V) окружность. Нам нужно учесть толщину будущего внешнего контура печати - скажем, его толщина должна быть 2 миллиметра. Соответственно, нам нужно вычесть ее из диаметра второй окружности. Не забывайте, что вычитать нужно двойное число (толщина контура 2 мм - уменьшаем диаметр второй окружности на 4 мм, т.е. 2 мм с одной стороны от центра, и 2 мм с другой). Теперь инструментом "Указатель" выделяем обе окружности (или "рамкой", не отпуская левую кнопку мыши, охватываем полностью обе окружности, или с нажатым Shift щелкаем по очереди на каждой). Включаем "Выравнивание и распределение" - и выравниваем объекты относительно друг друга по центру (по вертикали и по горизонтали).
2. Теперь нам необходимо превратить две окружности в один объект. Не снимая с них выделения, жмем Combine (Ctrl+L) на панели опций. У нас получится кольцо из двух окружностей.
Можно обойтись и без Combine - задать контур необходимой толщины, а за тем превратить его в объект (Arrange/Convert To Object). Здесь важно помнить (и учитывать при макетировании), что контур размещается по обе стороны реального абриса объекта - 4-миллимитровый, к примеру, выступает наружу на 2 мм и настолько же углубляется в сам объект.
3. Пункт специально для самых новичков. Если Вы помните, говорилось о полном отключении контуров и оставлении в макете ТОЛЬКО заливок. Если кто не знает, как это сделать, вот: Быстрое отключение контура - выделив необходимый объект, жмем правой кнопкой мыши СЮДА (выделено на картинке).
или то же самое (такую же кнопку) жмем на панели инструментов в параметрах контура:
4. Часто в центре печати размещается какое-либо изображение - герб, логотип, знак, текстура. Здесь главное, чтобы рисунок был ВЕКТОРНЫМ. И обязательно - одноцветным, контрастным, без полутоновых переходов. Следовательно, растровую картинку (если другой не имеется) необходимо или подвергнуть трассировке, или нарисовать заново (ВНИМАНИЕ!!! после трассировки обязательно подчищайте и дорабатывайте бывший растр, чтобы максимально уменьшить количество узловых точек и сгладить кривые). Можно использовать заливку монохромным узором или узором PostScript:
можно использовать (как в этом примере) докер "Вставить символ":
однако, не стоит столь откровенно пользоваться встроенными девайсами. Хороший дизайнер нарисует сам и свою собственную картинку.
5. Выравниваем все объекты - и окружности, и центральную картинку - так же, как выравнивали в самом начале, в пункте 1. И теперь, во избежание случайного сдвига элементов будущей печати, надо заблокировать все элементы:
Блокировка хороша тем, что сами заблокированные объекты никуда не денутся до отмены блокировки, а вот такая опция, как текст, пущенный "по пути", с заблокированными кривыми запросто проделывается.
6. Выбираем инструмент "текст", подносим к внешней окружности - контуру печати. Щелкаем левой кнопкой мыши тогда, когда курсор выглядит, как буква А, лежащая на волнистой линии (пустить текст "по пути"), а не как буквы АВ, замкнутые в рамку (параграфный текст - объект станет "рамкой" для текстового блока). Пишем необходимую надпись - шрифт и размер настраиваем по усмотрению (или по желанию заказчика). Написанную строчку необходимо выровнять:
не снимая выделения с текста, выберите инструмент "указатель" - и можете перемещать текстовую строку интерактивно, зажав, красный ромбовидный маркер левой кнопкой мыши. Или пошагово сдвигайте строчку, нажимая команды на панели опций - красным обведен "сдвиг вдоль пути", оранжевым - "оторвать от пути" (вверх-вниз).
ВНИМАНИЕ! в 12 версии инструментом "указатель" можно совершить интерактивный сдвиг только ВДОЛЬ пути, а в 13 версии Корел интерактивно не только можно двигать текст вдоль пути, но и отрывать от пути. Плюс еще работает и выравнивание по центру:
7. Нижняя строка (если это отдельная строка) должна читаться без "выворачивания" головы, как в обычном тексте - смысл в том, что верхняя строчка просто дугообразно изгибается вверх, а нижняя - вниз. Пишем строчку, как в пункте 6, но мысленно ее "переворачиваем". После написания строчки жмем СЮДА:
Выравниваем так же, как в пункте 6. Обращаю внимание пользователей 12 и 13 версии Корел: в 12 версии эта кнопка только ОДНА, активна она при выделении текста, идущего по пути, ИНСТРУМЕНТОМ "УКАЗАТЕЛЬ". На панели опций это крайняя справа кнопка. Она просто размещает надпись с другой стороны пути. В 13 версии эту опцию завязали с принципом "отражения". Поэтому необходимо нажать ОБЕ кнопки, показанные на скриншоте, если вы не хотите, чтобы надпись осталась зеркальной.
Еще один важный момент: межбуквенное расстояние в тексте, пущенном "по пути", так или иначе искажается. Здесь - в верхней строчке буквы слегка "разъехались", а в нижней - слишком придвинулись друг к другу. Для коррекции можно выбрать инструмент "форма" и потянуть за выделенный на скриншоте маркер: влево - межбуквенное расстояние сокращается, вправо - увеличивается. Можно так же чуть сдвинуть отдельные буквы, если они визуально "отваливаются" от основного текстового блока или, напротив, "прижимаются" друг к другу.
Можно еще добавить декоративные элементы - точки, полосы, звездочки - на "стыке" верхней и нижней надписи.
В конце работы необходимо проверить соответствие макета техническим требованиям конкретного предприятия, которое будет изготавливать печать. Говоря простым языком - существует некая "минимальная толщина" линии, которую способна воспроизвести та или иная аппаратура. Эту толщину необходимо выяснить заранее. Проверка делается элементарно - всей печати назначается контрастная (красная, к примеру) обводка, где толщина контура - тот самый "минимум". Если контур не пересекает сам себя и не наезжает на другие элементы макета - работа выполнена корректно. В противном случае необходимо вносить исправления. Необходимый минимум - это толщина самих элементов и промежутков между ними, о чем тоже важно помнить. Еще очень важно - чтобы отдельные элементы печати не пересекали друг друга.
Да - если вместо двух строчек текста идет одна длинная (типа - "младший помощник старшего дворника по уборке самых противных помещений"), то в этом случае "выворачивание головы" не страшно - подобный текст пишется одной строкой по кругу.
ОБЯЗАТЕЛЬНО - при сдаче макета на изготовление, превратите все объекты (особенно это касается текста) в кривые, или приложите к макету файлы с использованными шрифтами.
На примере создания иллюстрации можно понять основные приемы работы с Blend Tool, а также некоторые нюансы, которые следует учитывать для достижения положительных результатов. Это не прямое руководство, это лишь способ, один из многих, который позволяет понять алгоритм основных действий и решать в дальнейшем более сложные и конкретные задачи.
Не обычное применение Blend Tool.
На примере создания иллюстрации можно понять основные приемы работы с Blend Tool, а также некоторые нюансы, которые следует учитывать для достижения положительных результатов. Это не прямое руководство, это лишь способ, один из многих, который позволяет понять алгоритм основных действий и решать в дальнейшем более сложные и конкретные задачи.
Свеча на рисунке выглядит достаточно реалистичной, для ее создания использовалась техника описания ниже. Забегая вперед, скажу что время, затраченное автором не превышает одного часа, в рисунке использовалось шестнадцать нарисованных вручную элементов, все остальное сделано автоматически инструментом Blend Tool.
Для начала определимся с основными формами. В данном случае это пламя, ореол света, фитиль и собственно свеча. Те самые шестнадцать элементов это парные объекты, начальные и конечные, между которыми и производится операция перетекания, благодаря чему цвета плавно распределяются и рисунок выглядит реалистично. Это не маловажный аспект, цвет конечного (в данном случае внешнего) объекта языка пламени должен совпадать с цветом начального (внутреннего) объекта ореола, а цвет конечного объекта ореола с цветом фона.
Инструментом Bezier Tool по контрольным точкам нарисуем кривую. Следует отметить, что операции с кривыми требующие определенной точности нужно проводить именно Bezier Tool или Pen Tool, и изначально рисовать прямыми линиями, то есть определить на глаз где должны находится узлы и соединить их прямыми линиями. Инструмент Freehand Tool здесь не подойдет из-за неточности. Итак, когда линия проведена, делаем двойной клик на инструменте Shape Tool, двойной клик выделит все узлы элемента и все линии легко сделать кривыми командой Convert Line To Curve на панели свойств (Property Bar) активной при выбранном инструменте. Оставив активным инструмент Shape Tool отредактируем кривую до нужного вида, для хорошего перетекания важно чтоб все было плавно.
Не торопитесь с построением следующего объекта, здесь есть один важный нюанс. В идеале начальный объект дублируется и путем редактирования превращается в конечный. Дублируем кривую нажатием «+» на цифровой клавиатуре и инструментом Shape Tool тянем узлы на нужные позиции, с помощью направляющих линии доводятся до нужной степени изогнутости. Таким образом, получается кривая с тем же количеством схожих по свойствам узлов, что обеспечивает бес проблемное выполнение операции перетекания (Blend).
Далее руководствуясь теми же принципами рисуются остальные элементы рисунка. Язык пламени достаточно сложный объект, в нем используется три пары кривых, три последовательных перетекания.
Когда все пути готовы можно приступать к выбору цветовой гаммы. Здесь тоже следует обратить внимание на некоторые нюансы. Например не следует осуществлять переход от темно-желтого к светло-желтому в системе CMYK таким образом: из C0:M20:Y100:K20 в C0:M0:Y60:K0, так как в промежутке появятся «грязные» цвета типа C0:M11:Y81:K11, что значительно испортит вид рисунка. Такой переход лучше осуществить в два этапа: из C0:M20:Y100:K20 в C0:M0:Y100:K0, а из последнего в C0:M0:Y60:K0. Это стоит запомнить, руководствуясь таким принципом строятся и качественные градиенты, программные средства не идеальны, не следует полностью доверять им в таком важном аспекте как работе с цветом. Здесь не стоит ленится и жалеть времени, это один из завершающих этапов создания иллюстрации, следует уделить ему внимание, по экспериментировать и получить впоследствии картинку с яркими и сочными цветами, достойную глянцевой обложки.
Подготовительный, рутинный и самый сложный этап работы закончен. Теперь осталось самая приятная часть – создание переходов между объектами, превращение набора плашек в фотореалистичную иллюстрацию.
Выбираем инструмент Interactive Blend Tool или открываем докер Effects>Blend, делаем переход от объекта к объекту вручную или выбираем пару и нажимаем кнопку Apply в докере. В зависимости от исходного размера рисунка устанавливаем количество шагов (Steps).
Проблем возникнуть не должно если все сделано правильно, но все же если что-то упущено вместо ровного перехода может возникнуть цепочка из непонятных «рваных» объектов, не имеющих на первый взгляд никакого отношения к оригинальным и тем более к задуманному. Не стоит отчаиваться, для настоящего профессионала нет проблем которые нельзя решить. Такая ситуация может возникнуть в двух случаях: пути объектов имеют разное направление или несовпадающие узлы (даже если узлов одинаковое количество). Первая проблема решается просто, инструментом Shape Tool выделяется один объект и инвертируется направление кривой командой Reverse curve direction на панели свойств. Если не помогло придется самому назначить начальные и конечные узлы перетекания (предварительно убедившись что их одинаковое количество), для этого у инструмента есть набор опций Miscellaneous Blend Options (иконка с плюсиком на Property Bar, или последняя в докере), а в нем функция Map Nodes. После клика по ней курсор превратится в изогнутую стрелку и на одном из исходных объектов отобразятся узлы в виде увеличенных квадратиков, после клика на одном из таких квадратиков активируется второй объект с аналогичным отображением узлов, теперь следует кликнуть по узлу соответствующему первому выбранному, и повторить если потребуется на всех контрольные точки, хотя на практике все стает на свои места после «синхронизации» двух-трех узлов. Функция Split тоже достаточно интересна, она позволяет выделить любой объект из уже сделанного перетекания и сделать его третьим (средним) исходным и произвести над ним манипуляции (изменить цвет, размер, форму и т.д.) таким образом изменив все перетекание, в некоторых случаях достаточно удобно.
И на последок хотелось бы отметить. Данная статья лишь иллюстрирует на небольшом примере возможности программы и ее инструментов. Многие пользователи CorelDRAW недооценивают возможности Blend Tool и пренебрегают ее использованием, но при хорошо освоенной технике и достаточной практике с помощью инструмента без особого труда можно создавать сложные фотореалистичные, технически грамотные иллюстрации и элементы дизайна. Пламя, хромовые, матовые и глянцевые поверхности, объемные предметы и фигуры, тени – все это далеко не полный перечень того что можно изобразить этой техникой.
Главное о чем стоит упомянуть это, что ваш хранитель экрана будет работать в фоновом режиме и он не должен мешать работе других запущенных программ. Поэтому сам хранитель должен быть как можно меньшего объема. Для уменьшения объема файла в описанной ниже программе не используется визуальные компоненты Delphi, включение хотя бы одного из них приведет к увеличению размера файла свыше 200кб, а так, описанная ниже программа, имеет размер всего 20кб!!!
Технически, хранитель экрана является нормальным EXE файлом (с расширением .SCR), который управляется через командные параметры строки. Например, если пользователь хочет изменить параметры вашего хранителя, Windows выполняет его с параметром "-c" в командной строке. Поэтому начать создание вашего хранителя экрана следует с создания примерно следующей функции:
Поскольку нам нужно создавать небольшое окно предварительного просмотра и полноэкранное окно, их лучше объединить используя единственный класс окна. Следуя правилам хорошего тона, нам также нужно использовать многочисленные нити. Дело в том, что, во-первых, хранитель не должен переставать работать даже если что-то "тяжелое" случилось, и во-вторых, нам не нужно использовать таймер.
Процедура для запуска хранителя на полном экране - приблизительно такова:
Во-первых, мы проинициализировали некоторые глобальные переменные (описанные далее), затем прячем курсор мыши и создаем окно хранителя экрана. Имейте в виду, что важно уведомлять Windows, что это - хранителя экрана через SystemParametersInfo (это выводит из строя Ctrl-Alt-Del чтобы нельзя было вернуться в Windows не введя пароль). Создание окна хранителя:
Теперь окна созданы используя вызовы API. Я удалил проверку ошибки, но обычно все проходит хорошо, особенно в этом типе приложения.
Теперь Вы можете погадать, как мы получим handle родительского окна предварительного просмотра ? В действительности, это совсем просто: Windows просто передает handle в командной строке, когда это нужно. Таким образом:
Как Вы видите, window handle является вторым параметром (после "-p").
Чтобы "выполнять" хранителя экрана - нам нужна нить. Это создается с вышеуказанным CreateThread. Процедура нити выглядит примерно так:
Нить просто заставляет обновляться изображения в нашем окне, спит на некоторое время, и обновляет изображения снова. А Windows будет посылать сообщение WM_PAINT на наше окно (не в нить !). Для того, чтобы оперировать этим сообщением, нам нужна процедура:
Если мышь перемещается, кнопка нажала, мы спрашиваем у пользователя пароль:
Это также демонстрирует использование registry на уровне API. Также имейте в виду как мы динамически загружаем функции пароля, используюя LoadLibrary. Запомните тип функции?
TVSSFunc ОПРЕДЕЛЕН как:
Теперь почти все готово, кроме диалога конфигурации. Это запросто:
Трудная часть -это создать диалоговый сценарий (запомните: мы не используем здесь Delphi формы!). Я сделал это, используя 16-битовую Resource Workshop (остался еще от Turbo Pascal для Windows). Я сохранил файл как сценарий (текст), и скомпилированный это с BRCC32:
Почти также легко сделать диалоговое меню:
После того, как пользователь выбрал некоторые установочные параметры, нам нужно сохранить их.
Загружаем параметры так:
Легко? Нам также нужно позволить пользователю, установить пароль. Я честно не знаю почему это оставлено разработчику приложений ! Тем не менее:
Мы динамически загружаем (недокументированную) библиотеку MPR.DLL, которая имеет функцию, чтобы установить пароль хранителя экрана, так что нам не нужно беспокоиться об этом.
TPCPAFund ОПРЕДЕЛЕН как:
(Не спрашивайте меня что за параметры B и C ! :-)
Теперь единственная вещь, которую нам нужно рассмотреть, - самая странная часть: создание графики. Я не великий ГУРУ графики, так что Вы не увидите затеняющие многоугольники, вращающиеся в реальном времени. Я только сделал некоторые ящики.
И последнее - глобальные переменные:
Затем исходная программа проекта (.dpr). Красива, а!?
Ох, чуть не забыл! Если, Вы используете SysUtils в вашем проекте (например фуекцию StrToInt) вы получите EXE-файл больше чем обещанный в 20k. :) Если Вы хотите все же иметь20k, надо как-то обойтись без SysUtils, например самому написать собственную StrToInt процедуру.
Если все же очень трудно обойтись без использования Delphi-форм, то можно поступить как в случае с вводом пароля: форму изменения параметров хранителя сохранить в виде DLL и динамически ее загружать при необходимости. Т.о. будет маленький и шустрый файл самого хранителя экрана и довеска DLL для конфигурирования и прочего (там объем и скорость уже не критичны).
Эта заметка не имеет непосредственного отношения к DELPHI, уж извините :) Но получив в очередной раз письмо с предложение за два клика заработать $5000 я не выдержал, душа просит высказаться!
Я рассмотрю несколько вариантов заработка денег в internet с описанием, их плюсами и минусами. Сразу предупреждаю, это мое личное мнение, никак не претендую на глубину и всесторонность обзора.
1. Начнем с наиболее правильного и близкого нам программистам :) SHAREWARE.
Написание программы с целью ее продажи. Решаясь на подобное сначала все хорошенько обдумайте и взвесьте, зарабатывать на shareware можно и нужно, но… всегда есть проклятое "но" :) Для создания хорошо продаваемой программы вам придется не мало потрудиться. Срок от начала написания до реальных продаж вряд ли получится менее полугода. Вам придется много работать и главное думать. Здесь нет руководителя, который напишет Т.З. и скажет когда и что нужно сделать :( Все самому, а еще лучше команде. Одному человеку трудно быть одновременно хорошим программистом, генератором идей, дизайнером, маркетологом и т.д. и т.п. Лучше, если каждый будет заниматься тем, что умеет делать лучше всего. И тогда… по непроверенным данным ReGet получат более $50.000 в месяц! ;)
Как этого добиться? Здесь нет никаких строгих правил, все зависит от вашего таланта и, наверное, везения. Вот один из вариантов: выбрать направление программы, лучше, если это будет то, что требуется большому количеству людей каждый день в их постоянной работе за компьютером. Потратить с месяц или более, на сбор и анализ существующих подобных программ в интернете (трудно придумать что-то совсем уж уникальное :) обязательно уже есть аналоги, необходимо выяснить слабые и сильные стороны каждой программы и составить Т.З. для своей программы, включая туда самое лучшее. Кстати, не обязательно делать самостоятельную программу, это вполне может быть что-то прикладное к уже имеющимся. Например, каждый браузер умеет сам закачивать файлы из internet и тем не менее, "качалок" великое множество! Почему? Да потому что они удобнее в использовании и имеют дополнительные функции.
Далее самый плодотворный процесс - написание самой программы. На это уходит от месяца до года (больше не надо, а то она за это время бесконечно устареет :) По окончании написания программы, ее отладка и анализ, а действительно ли она так хороша, как предполагалось в начале?! ;) На этом этапе лучше выложить для скачивания бесплатную beta-версию на русском языке. И, зарегистрировавшись в русских каталогах, предлагать нашим тестировать новое чудо современных технологий! После чего, вы получите массу писем с ошибками и пожеланиями, все учитываете и дорабатываете, дорабатываете… На это может уйти даже больше, чем на написание основного кода программы. Когда считаете, что программа отшлифована и проверена на самых различных конфигурациях компьютеров, можно готовить английскую версию, выкладывать на сайт, регистрироваться в системах, которые помогут вам получать деньги от буржуев (например RegNow) и раскрутка вашего детища - регистрация в поисковых системах, а главное в каталогах для ShareWare программ, которых в инете великое множество. И с замиранием сердца ждать :) анализировать статистику заходов на ваш сайт, откуда приходят, почему с других мест не идут? Сколько людей пришло и "дошло" до скачивания и оплаты. На каком этапе вы потеряли клиента, почему? Все надо довести до идеала, клиенту нужно максимально упростить способ расставания с деньгами! :) Как видите, непосредственно программирование здесь занимает очень малую долю, и можно даже сказать, не главную! (Билл Гейтс ведь смог же продавать геморрой за деньги! :) :)
Рекомендую вам подписаться на рассылку российских шароварщиков swrus.com, узнаете много нового и полезного. А главное, общение с людьми, которые реально зарабатывают на этом! Плюсы:Это станет вашим основным заработком. Сумма, получаемая вами ежемесячно, ничем не ограничена, только вашим талантом! При удачной раскрутке, можно создавать свою фирму, становиться начальником, нанимая других программистов ;) Если на вас обратит внимание крупная западная фирма, то можно выгодно "продаться" :) Минусы: Вам придется долгое время вкалывать за красивую мечту. Никто, ничего не гарантирует. Вы с большой вероятностью можете в итоге оказаться у разбитого корыта :( Придется запастись терпением!
2. Создание сайта.
Вы создаете сайт, делаете его интересным для как можно большей доли посетителей интернета и как следствие, высокую посещаемость. После чего можно продавать рекламное место на своем сайте или зарабатывать через баннерные сети, что платят за показы или клики. Важно правильно выбрать тематику сайта, рекламодателям должно быть выгодно именно у вас размещать свою рекламу. Возьмем к примеру этот сайт (Мастера DELPHI), сайт сильно специфичен, рассчитан на очень малый процент людей в сети, мало того что именно программист, так еще и обязательно на DELPHI :) Потому добиться действительно высокой посещаемости его просто не реально. Но не это главное, кто из рекламодателей захочет здесь разместить рекламу? Ведь, понятно, его реклама должна ему же приносить деньги, т.е. чаще всего это или продажа своей программы, или привлечение целевой аудитории. Сайт русскоязычный, а русские не привыкли покупать программы, да и зачастую не на что! Вот и получается, что работаем мы над этим сайтом, только ради альтруизма и пользы вам, наши дорогие посетители :)
Или другой пример, сайт NoNaMe. Ему пол года, и за это время автор сайта добился блестящих результатов! (потому что сайт действительно интересен, всегда можно найти для себя что-то полезное. Рекомендую всем!) На данный момент до 9тыс. уникальных посетителей! Но… опять же, сайт специфичен, публикация кряков к программам оставляет весьма сомнительную вероятность того, что кто-то захочет рекламировать там свой продукт ;)
Лучше всего, конечно же, сайт рассчитанный на широкую публику: поисковые системы, каталоги, новости… игровые/развлекательные сайты здесь не лучшем положении (мой знакомый, автор сайта netcross.ru раскрутил его весьма хорошо, а сейчас практически забросил. Создал свою фирму по дизайну, и она за два месяца принесла денег больше чем за все время существования netcross.ru :) Плюсы:Широчайшее поле для творчества. Ваш доход ничем не ограничен. Интернет развивается бешенными темпами. И помните! Совсем недавно list.ru был продан за $5.000.000 !!! Вполне хватит на карманные расходы ;) Минусы: Вам придется в поте лица работать над своим сайтом и, как и в первом случае, большая вероятность остаться у разбитого корыта :(
3. Интернет услуги.
Создаете свою компанию по оказанию каких-либо интернет услуг: дизайн, интернет магазин, хостинг, регистрация, раскрутка и т.д. и т.п. Вполне реальный способ заработка, здесь нечего добавить. Практически в любом случае вы будете получать доход, доход лишь зависит от вашего желания работать и от того, откуда у вас растут руки :) Лично я напрямую связан с предоставлением хостинга российским компаниям, и со всей ответственностью заявляю, на хостинге можно и нужно зарабатывать. Помните, русский интернет сейчас развивается очень быстро, и потребность в различных видах услуг велика. Плюсы: Вы получаете реальные деньги за реальную работу. Все сводится только к поиску и привлечению людей, которым ваши услуги необходимы. Минусы: Зачастую требует начальных капиталовложений. Здесь нет халявы, не получится почивать на лаврах (как при удачном раскладе в первых двух пунктах), работать, работать и еще раз работать :)
На этом позвольте закончить вторую часть. Это не все о заработке, возможно я продолжу этот цикл, если вам конечно интересно :)
На сегодняшний день цифровое видео развивается в двух направлениях это видео улучшенного качества для просмотра его на больших ЖК-панелях. И видео уменьшенного размера для экранов портативных устройств. Конечно смотреть фильм или видеоклип на большом экране намного удобней чем на маленьком. Зато устройства с малыми экранами, такие как мобильные телефоны, КПК и медиаплееры легко можно носить в кармане и смотреть видео в любых ситуациях.
Конвертирование видео в мобильные форматы.
На сегодняшний день цифровое видео развивается в двух направлениях это видео улучшенного качества для просмотра его на больших ЖК-панелях. И видео уменьшенного размера для экранов портативных устройств. Конечно смотреть фильм или видеоклип на большом экране намного удобней чем на маленьком. Зато устройства с малыми экранами, такие как мобильные телефоны, КПК и медиаплееры легко можно носить в кармане и смотреть видео в любых ситуациях.
Но для того, что бы такое портативное устройство смогло показывать видео его соответствующим образом надо подготовить и записать в память.
Конвертировать видео в форматы, поддерживаемые мобильными устройствами, проще всего при помощи специальных программ. Благодаря этим программам не нужно задумываться над тем, какое разрешение выбрать, и какой формат поддерживается мобильным девайсом.
Agogo Video to iPod / PSP / Cell Phone / Xbox / Pocket PC / PDA / MP4
Хотя название программы выглядит слишком длинным, зато пользователю не нужно вчитываться в описание программы и искать список поддерживаемых форматов, для того чтобы понять, поддерживает ли этот конвертер видео для мобильных телефонов или iPod.
Интерфейс ее так же прост, как незатейливо ее название. Окно состоит из трех основных частей: списка файлов, окошка предварительного просмотра и области, в которой задаются настройки кодирования. Для удобства она имеет несколько вкладок – To iPod, To Xbox, To 3GP и т.д. Таким образом, практически исключена возможность того, что вы выберете такой формат, который не поддерживается вашим портативным устройством. Настройки кодирования можно устанавливать только для видеофайлов, которые вы собираетесь проигрывать на iPod, для остальных устройств программа предлагает только профили настроек, изменить которые нельзя. Профили включают формат, разрешение и параметры звука. Число профилей не очень велико, например, для XBox – четыре, а для видеоплееров – всего два. Что касается iPod, то тут профили не предусмотрены, и пользователю самому предлагается определиться с форматом, количеством кадров в секунду, разрешением, соотношением сторон, частотой дискретизации аудио, битрейтом аудио и видео и громкостью.
Agogo Video to iPod / PSP / Cell Phone / Xbox / Pocket PC / PDA / MP4 может выполнять преобразование видеофайлов в пакетном режиме. Для этого достаточно загрузить в программу несколько видеофайлов. После того, как файл загружен, его можно просмотреть в окне предварительного просмотра и при необходимости отметить фрагмент, который нужно конвертировать. Для этого под окном предпросмотра есть специальные маркеры – в начале и в конце клипа. Кодирование будет выполняться с того места клипа, где установлен первый маркер, и до того, где находится второй.
Загруженные в программу файлы не обязательно кодировать все вместе. Напротив каждого из них есть флажок, и если перед нажатием кнопки Start его снять, то клип будет пропущен. Перед началом конвертирования нужно не забыть указать папку, куда будет сохраняться видео. Также при необходимости можно попросить программу выключить компьютер, когда все задания будут завершены.
WinAVI iPod/PSP/3GP/MP4 Video Converter
Программа так же не сложная – на освоение программы уходит максимум минуты три.
Первое, что нужно сделать – это выбрать устройство (iPod, PSP) или формат (3GP, MP4), нажав на одну из четырех кнопок. После этого нужно будет загрузить файл или файлы, которые необходимо преобразовать. Конвертер позволяет выбирать несколько файлов одновременно, но нужно, чтобы они были помещены в одну папку. Чтобы преобразовать видео с параметрами по умолчанию, нужно просто нажать кнопку OK, после чего программа начнет свою работу.
Кроме форматов, которые вынесены в название программы, WinAVI iPod/PSP/3GP/MP4 Video Converter поддерживает и другие, "немобильные форматы", такие как Mov, Rm, Wmv и другие. Стоит также отметить пакетный режим, в котором можно выполнить преобразование нескольких видеофайлов. В этом режиме можно установить очередь из файлов, которые нужно конвертировать в разные форматы. Его также можно использовать для преобразования одного и того же файла в несколько разных форматов.
Во время конвертирования файлов можно наблюдать за процессом в окне предварительного просмотра. Если компьютер достаточно мощный, то можно включить отображение видео в реальном времени. Очень удобно, что эти настройки можно менять непосредственно по время кодирования, не останавливая при этом процесс. Если предполагается, что кодирование займет много времени, можно включить опцию выключения компьютера после его завершения и лечь спать.
Xilisoft Video Converter
Число поддерживаемых этим конвертером форматов просто огромно – вряд ли вы не найдете в этом длинном списке тот, который нужен именно вам. При помощи программы можно даже преобразовать видео для просмотра на BlackBerry, Apple TV и iPhone, все более распространенные устройства тоже поддерживаются.
Программа может работать в двух режимах: в стандартном, для опытных пользователей, и в режиме мастера, предназначенном для новичков. Немного неудобно, что между этими режимами никак нельзя переключаться – она реализованы как две независимые утилиты, для открытия одной из которых нужно будет обратиться к меню "Пуск".
Настройка параметров кодирования выполнена очень удобно – не нужно открывать дополнительные окна, все параметры вынесены в главное окно программы. Тут можно определить качество видео и аудио, отключить звук, указать соотношение сторон и т.д.
Очень удобно и окошко предварительного просмотра – в нем можно по очереди проигрывать все файлы, загруженные в программу.
PocketDivxEncoder
Эта программа заслуженно пользуется большой популярностью среди владельцев КПК, смартфонов и других портативных устройств. В отличие от большинства видеоконвертеров, она не требует установки, совершенно бесплатна и, к тому же, имеет русскую локализацию.
Благодаря гибким настройкам, программа может использоваться даже для тех устройств, профили для которых она не поддерживает, например, для Sony PSP. Правда, в этом случае подбирать разрешение видео и другие настройки придутся вручную. С другой стороны, PocketDivxEncoder поддерживает сохранение пользовательских профилей, поэтому если вы постоянно кодируете видео для просмотра на одном и том же устройстве, подобрать настройки нужно будет только один раз.
Для наглядности в PocketDivxEncoder везде, где требуется предпросмотр видео, можно увидеть картинку выбранного устройства, а видео будет отображаться на его "экране". Это очень удобно, например, когда вы подбираете разрешение видеофайла – если оно слишком велико, вы сразу же увидите, что видео "вылазит" за пределы экрана.
Одна из функций, на которую нельзя не обратить внимание, - подсчет итогового размера файла. Происходит это в реальном времени – вы изменяете параметры, отвечающие за качество видео и звука, а программа тут же подсчитывает, как это отразится на размере файла. Очень удобно.
Для PDA и смартфонов предусмотрена возможность изменять ориентацию видео, в зависимости от того, как пользователь держит устройство. Конечно же, в современных портативных устройствах есть подобная функция, однако если видео изначально будет сохранено с нужной ориентацией, это освободит ресурсы системы.
Часто при неудачном сжатии происходит расхождение звука с видео. PocketDivxEncoder дает возможность исправить подобные ошибки и восстановить правильную синхронизацию аудио и видео.
SUPER 2007
Конвертер SUPER полностью оправдывает свое название. Программа поддерживает огромное число форматов, абсолютно бесплатна и, к тому же, содержит все необходимые кодеки. Понятно, что последнее отражается на ее размере – дистрибутив занимает около 30 Мб, но зато после установки вы можете быть полностью уверены в том, что сможете выполнить кодирование в любой формат с использованием любого популярного кодека.
Интерфейс программы хоть и не имеет ничего общего с внешним видом других конвертеров, назвать сложным его нельзя. Разработчики использовали несколько приемов, которые помогают сразу разобраться с программой. Во-первых, при подведении курсора к каждой области окна появляется всплывающая подсказка, объясняющая, что пользователю нужно делать (при необходимости подсказки можно отключить). Во-вторых, элементы интерфейса имеют разный цвет: все, что зеленое, относится к настройкам кодирования видео, синий цвет – это цвет параметров аудио, а настройки формата выделены красным.
У SUPER нет окна предварительного просмотра видео, однако есть встроенный проигрыватель. По умолчанию он воспроизводит видео во весь экран, но при желании можно вызвать окно настроек и изменить их.
Профили для портативных устройств заслуживают всяческих похвал. Есть профили для сохранения файла в AVI для проигрывания на КПК, для Nintendo DS, Sony PSP, Sony PS3, Zune, два разных профиля для сохранения в формат 3GP – для телефонов Nokia/Siemens и для Sony Ericsson, а также два профиля для iPod – для более старых моделей и плееров последнего поколения. При выборе того или иного профиля все неподдерживаемые параметры для удобства скрываются.
Среди настроек кодирования стоит отметить возможность отключения аудио или видеопотока, а также наличие функции Stream Copy, которая позволяет произвести кодирование без повторной компрессии звука или видео, а значит, без потери качества. Если при выбранных вами параметрах эта опция недоступна, они просто станет неактивной.
Наконец, SUPER содержит достаточно много дополнительных эффектов, которые могут быть применены к выходному видеофайлу. Например, можно добавить на видео водяной знак, изменить ориентацию видео, инвертировать цвета, добавить затухание, вывести на каждом кадре информацию о клипе. Однако, использовать все эти эффекты в одном видео не рекомендуется.
AVS Video Tools
AVS Video Tools – это пакет утилит для работы с видео. Один из них – AVS Video Converter - общего назначения, а второй, AVS Video to GO, создан специально для преобразования видео в форматы, поддерживаемые портативными устройствами.
Работа AVS Video to GO построена в виде мастера – на первом этапе необходимо выбрать видеофайл, после чего в окне программы отобразятся его параметры. Можно воспользоваться окном предпросмотра, чтобы убедиться, что загружен нужный файл.
AVS Video to GO работает не только с обычными видеофайлами, но и с DVD. Список поддерживаемых девайсов достаточно велик – есть даже профили для мобильных телефонов, работающих в сетях CDMA, для портативных DVD-плееров, плееров Creative Zen, Archos DVR и Apple TV.
AVS Video to GO – очень удобное решение, когда нужно выполнить конвертирование одного файла. Если же есть необходимость в пакетном преобразовании, нужно использовать AVS Video Converter.
Пожалуй, единственный недостаток программы в том, что нет возможности указывать параметры для каждого файла по отдельности – настройки выходного видео будут применены для всех загруженных в программу файлов.
Kingdia iPod/PSP/3GP/MP4/AVI Video Converter
Программа имеет узкую специализацию и ориентирована исключительно на создание видеофайлов для портативных устройств. С его помощью можно конвертировать видео в форматы, поддерживаемые КПК, Palm, iPod, Sony PSP, мобильными телефонами и медиаплеерами.
Преобразование может выполняться в пакетном режиме, правда, настройки при этом выбираются не отдельно для каждого файла, а для всех одновременно.
В списке выбора выходного формата шесть вариантов – Apple iPod, Sony PSP, 3GP, 3GP2, MP4 и xVid. При выборе одного из них загружаются настройки по умолчанию, однако всегда есть возможность изменить их, выбрав другой кодек или уменьшив битрейт. Правда, тонкая настройка параметров кодека, к сожалению, недоступна. Есть также ползунок для изменения громкости файла.
Во время преобразования отображение видео не работает, зато можно наблюдать за ходом выполнения операции, глядя на ползунок, который появляется в списке заданий. Если процесс кодирования занимает много времени, можно установить флажок Shutodown PC when finished, и программа сама выключит компьютер после завершения работы.
Среди коммерческих приложений наиболее функциональной оказалась программа AVS Video Tools. Ее цена не намного больше, чем других конвертеров, но по возможностям она их заметно превосходит, поскольку AVS Video Tools можно использовать и для захвата видео с камеры, и для конвертирования DVD. Что касается бесплатных программ, то и SUPER 2007, и PocketDivxEncoder хорошо справляются со своей задачей и при этом не требуют много времени на то, чтобы разобраться с интерфейсом.
Самым распространенным и популярным из профессиональных графических редакторов считается Adobe Photoshop. Но многим профессионалам все возможности «Фотошопа» не нужны в полном объеме, а цена его довольно высокая. Вот и приходится искать более дешевые но с профессиональными возможностями. Таких редакторов в настоящее время существует достаточно много. Один из них Photo Pos Pro от компании Power of Software, у которого есть все возможности профессионального графического редактора.
Photo Pos Pro еще один профессиональный графический редактор.
Самым распространенным и популярным из профессиональных графических редакторов считается Adobe Photoshop. Но многим профессионалам все возможности «Фотошопа» не нужны в полном объеме, а цена его довольно высокая. Вот и приходится искать более дешевые но с профессиональными возможностями. Таких редакторов в настоящее время существует достаточно много. Один из них Photo Pos Pro от компании Power of Software, у которого есть все возможности профессионального графического редактора.
Сколько существует графических редакторов столько же и существует логик работы с ними. С Photo Pos Pro придется немного повозиться, вникая в его логику. К примеру, масштабировать изображение по "горячим" клавишам Ctrl+ и Ctrl– не получится, зато можно масштабировать с помощью левой и правой кнопок мыши, что тоже довольно удобно. Так же отсутствует типовой для всех графических редакторов инструмент Levels в чистом виде. Привычные в других программах операции здесь выполнялись несколько по-другому, и поэтому приходилось внимательно изучать файл справки. И, к сожалению, обращение к справке требует знаний английского языка — программа не локализована.
Когда же немного освоишься в программе, начинаешь понимать, насколько ее интерфейс удобен. Иконки поначалу кажутся маленькими, но привыкаешь к ним быстро. Оригинально выполнены окна панелей инструментов. Их всего два: менеджер слоев и собственно панель инструментов. Менеджер слоев — постоянная панель, а вот панель инструментов меняется в зависимости от выбранного инструмента. Обе панели автоматически сворачиваются и разворачиваются при наведении на них указателя мыши. Это очень удобно, так как панель в развернутом виде нужна только при настройке параметров инструмента, а в остальное время она мешает работе. Автоматическое сворачивание панелей до полосы с названием панели позволяет максимально сосредоточиться на творческой деятельности. Впрочем, при необходимости можно закрепить панели в развернутом состоянии.
Довольно-таки удобно реализован и инструмент выбора цвета. Он находится на правом крае рабочей области программы и включает в себя кроме инструмента выбора цвета еще и возможности по управлению градиентом заливки, текстурой и шаблонами. Здесь также нашлось некоторое отклонение от стандартных правил, хотя инструмент очень удобен. В соответствии с этими правилами цвет фона (background) располагается на инструментах выбора цвета за цветом инструмента (foreground). В Photo Pos Pro все наоборот, и это на первых порах сбивает с толку, но потом привыкаешь и к этому.
Еще удобно сделано в интерфейсе поддержка вкладок. Некоторых редакторах несколько открытых изображений показываются через отдельные окна, что затрудняет навигацию между ними, если открыто много картинок. При использовании механизмов вкладок такая навигация упрощается. Точно так же в виде вкладки может быть встроенный просмотрщик картинок. В самом просмотрщике можно получить полную информацию о любой из фотографий, как о самом файле, так и Exif.
Есть возможность использования фонов, которые можно просмотреть через специальный инструмент Themes Background. Темы фона в этом каталоге разбиты на пять категорий, и общее их количество не очень велико. Хотя можно загрузить бесплатные темы с сайта либо поместить свои картинки в папку Pictures каталога программы, так как в качестве фона используются картинки в обычных графических форматах. Аналогично можно поступить с масками, шаблонами, кистями, текстурами, подкладывая собственные образцы в соответствующие папки. А вот с рамками так не получится, так как для рамок используется собственный формат.
В арсенале инструментов для обработки изображений у Photo Pos Pro есть практически все:
• инструменты выделения, поворота и отображения;
• инструменты перемещения, обрезки и трансформации;
• разнообразные виды кистей, шаблоны, текстуры, градиенты;
• инструменты создания различных форм и линий;
• инструменты пакетной, ручной и автоматической цветокоррекции;
• разнообразные фильтры, маски и эффекты;
• инструменты добавления рамок, текста;
• возможность работы со слоями.
Удобство работы с инструментами все же не такое высокое, как в иных редакторах. Не совсем удобны маленькие и не изменяемые в размерах окна фильтров. В них получаются очень мелкие превьюшки обрабатываемых изображений, поэтому приходится использовать кнопку Preview, либо включать режим AutoPrewiew, который отображает на самом изображении вносимые изменения. А на полную обработку картинки требуются время и вычислительные ресурсы. На слабых компьютерах это будет серьезно мешать дизайнеру. С этой точки зрения системные требования к компьютеру явно занижены разработчиками.
Механизмы эффектов, фильтров, инструментов цветокоррекции работают довольно хорошо. Реализовать какую-нибудь задумку не сможет разве что ну очень "креативный" дизайнер. Набор фильтров богат, хотя совсем уж оригинальных не нашлось. Также не нашлось механизма подключения плагинов сторонних разработчиков, такая функция не помешала бы.
В Photo Pos Pro есть упрощенный инструмент нарезки изображений для Веба: HTML Image Mapper. К нему бы добавить инструмент оптимизации самого изображения для Веба по размеру файла, который здесь отсутствует — и вовсе было бы замечательно.
А в общем Photo Pos Pro — довольно удобный графический редактор, который претендует на уровень профессионального. К нему, конечно, нужно привыкать, но, однажды привыкнув, вы сможете на довольно высоком уровне обрабатывать графический материал, получая профессиональные результаты.
Системные требования:
• операционная система Windows 98/Me/XP/Vista;
• процессор с частотой 350 МГц и выше;
• 256 Mб оперативной памяти;
• 300 Mб свободного места на жестком диске;
• 16-битная цветопередача;
• разрешение монитора 800x600 пикселей.