Как создать скринсейвер
Перейти к содержимому

Как создать скринсейвер

Как создать уникальный скринсейвер

Заставка появляется на экране монитора компьютера, если какое-то время им не пользоваться. В интернете можно найти множество хранителей экрана на любой вкус, но большинство из них являются платными. Стандартные скринсейверы, входящие в комплект операционной системы, быстро надоедают. Выход? Конечно же, создать свой собственный уникальный хранитель экрана.

Если вы умеете программировать, то для вас не будет проблемой создать собственный скринсейвер. Но есть и более легкий способ, который не требует совершенно никаких навыков в программировании. Уже давно появились специальные программы для быстрого создания скринсейверов. Эти программы легки в применении, не требуют знания программирования. С помощью таких программ трудоемкий процесс программирования скринсейвера превращается в увлекательное занятие. Для создания собственного хранителя экрана достаточно подготовить графические и медиафайлы, определить настройки эффектов скринсейвера и сохранить скринсейвер с расширением .SCR. Всё — хранитель экрана готов.

Одной из таких программ является Nature Illusion Studio. Скачать эту программу можно с официального сайта. Программа платная, но существует пробная версия. Пробная версия поддерживает все функции, доступные в полной версии продукта. Вы можете пользоваться этой версией в течение тридцати дней бесплатно. Nature Illusion Studio может быть установлена под Windows 2000, XP, Vista, Windows 7 (32/64bit).

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

Опишем подробнее процесс создания скринсейвера в Nature Illusion Studio.

Запустим программу и в открывшемся диалоговом окне выберем «Создать новый проект». В новом окне необходимо нажать на кнопку «Загрузить рисунок» и выбрать на диске компьютера подготовленное для вашей заставки фото (фон вашего скринсейвера) в формате .JPG. В этом же окне задайте имя вашего хранителя экрана и папку, в которую будет сохранен ваш проект.

После выполнения вышеописанных действий жмем OK. Далее переходим к основному этапу разработки нашего проекта — созданию эффектов для скринсейвера.

В верхней левой части экрана находится меню масок (слоев). Каждый слой обозначен своей цифрой и цветом.

Создадим эффект ряби на воде. Для этого выбираем первую маску — слой номер один. Далее выбираем Инструмент — Кисть, зададим размер кисти и настроим эффекты для неё. В окне «Эффекты» выберем вкладку «Вода». Установим такие параметры эффектов как показано на рисунке. Теперь для реализации выбранного нами эффекта нам необходимо аккуратно закрасить водную гладь кистью. Слой номер 1 отображается синим цветом.

Перейдем на слой номер 2 и создадим эффект водопада. Для того чтобы оживить водопад, аккуратно закрасим кистью водопад на фото. На первом рисунке этот слой отображается сиреневым цветом.

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

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

Следующий этап создания нашего скринсейвера — добавление анимированных объектов. Перейдем на вкладку «Объект» и выберем из меню подходящие для нашей заставки объекты (тропические птицы, пархающие разноцветные бабочки). Для каждого объекта есть возможность настроить поведение (траекторию полета/передвижения), размер объекта. Для этого на вкладке «Объект» выбираем кнопку «Изменить объект». В результате откроется окно «Свойства объекта», в котором мы можем задать размер, прозрачность объекта, период его появления на экране, продолжительность отображения на экране, скорость движения, область движения, траекторию полета или, наоборот, задать параметры, согласно которым объект будет неподвижным.

Перейдем на вкладку «Звук» и добавим звуки: шум воды, пение птиц, крики зверей в джунглях. Для каждого звукового эффекта есть возможность задать период его проигрывания в скринсейвере (непрерывное повторение, воспроизведение в заданном интервале времени, появление звука в указанное время).

Посмотрим на результат нашей работы, нажав на клавишу F9. Выберем в меню «Создание» пункт «Заставка (.scr)». В открывшемся окне зададим название нашей заставки и нажмем на кнопку «Сборка».

Заставка создана. Теперь мы можем запустить заставку для просмотра или установить ее к себе на компьютер нажатием кнопки «Установить заставку».

Nature Illusion Studio — не единственная в своем роде программа для быстрого создания хранителей экрана. Заслуживает внимания и Аnimatted Screensaver Maker — набор инструментов, позволяющих быстро и легко создавать из любых изображений потрясающие анимированные заставки с оптическими эффектами, эффектами огня, дыма, погоды. С помощью этой программы вы сможете превратить фотографию в подводный мир с проплывающими рыбками или просто сделать красивый морской фон.

Пишем скринсейвер на wxWidgets

Этот материал никоим образом не призывает читателя к написанию скринсейверов, а предназначается, прежде всего, для обзора некоторых возможностей библиотеки wxWidgets. Тем, кто еще не знаком с wxWidgets, но хочет узнать больше, можно почитать статьи на CodeProject.com (эту и эту)

Мозг – это то, что нам нужно
  • Координаты
  • Отображаемое значение
  • Скорость перемещения
  • Цвет
  1. class MatrixSymbol
  2. <
  3. wxPoint m_Position;
  4. wxChar m_Symbol;
  5. int m_Speed;
  6. wxColour m_Colour;
  7. public :
  8. MatrixSymbol()
  9. : m_Position(wxDefaultPosition), m_Symbol(wxT( ‘0’ )),
  10. m_Speed(1), m_Colour(*wxGREEN) <>
  11. MatrixSymbol( const wxPoint & position, wxChar symbol,
  12. int speed, const wxColour & colour)
  13. : m_Position(position), m_Symbol(symbol),
  14. m_Speed(speed), m_Colour(colour) <>
  15. const wxPoint & GetPosition()
  16. void SetPosition( const wxPoint & value )
  17. wxChar GetSymbol()
  18. void SetSymbol(wxChar value )
  19. int GetSpeed()
  20. void SetSpeed( int value )
  21. const wxColour & GetColour()
  22. void SetColour( const wxColour & value )
  23. >;
  1. #include <wx/dynarray.h>
  2. .
  3. WX_DECLARE_OBJARRAY(MatrixSymbol, MatrixSymbolArray);
  4. .
  5. #include <wx/arrimpl.cpp>
  6. WX_DEFINE_OBJARRAY(MatrixSymbolArray);
Лепим графический интерфейс
  1. class MatrixCanvas: public wxWindow
  2. <
  3. .
  4. void InitMatrix();
  5. .
  6. MatrixSymbolArray m_Symbols;
  7. .
  8. >;
  9. void MatrixCanvas::InitMatrix()
  10. <
  11. int width(0), height(0);
  12. int sw(0), sh(0);
  13. GetTextExtent(wxT( «0» ), &sw, &sh);
  14. GetClientSize(&width, &height);
  15. m_Symbols.Clear();
  16. for ( int x = 0; x < width; x += sw+2)
  17. <
  18. m_Symbols.Add(MatrixSymbol(
  19. wxPoint(x, 0),
  20. rand()%2 ? wxT( ‘0’ ) : wxT( ‘1’ ),
  21. 3+rand()%5,
  22. wxColour(0, rand()%200+56, 0)));
  23. >
  24. >
  1. BEGIN_EVENT_TABLE( MatrixCanvas, wxWindow )
  2. EVT_PAINT( MatrixCanvas::OnPaint )
  3. EVT_ERASE_BACKGROUND( MatrixCanvas::OnEraseBackground )
  4. END_EVENT_TABLE()
  5. void MatrixCanvas::OnPaint( wxPaintEvent& event )
  6. <
  7. wxBufferedPaintDC dc( this );
  8. dc.SetBackground(wxBrush(GetBackgroundColour()));
  9. dc.Clear();
  10. wxFont font = GetFont();
  11. #if defined(__WXWINCE__)
  12. int fontSize = 14;
  13. #else
  14. int fontSize = 48;
  15. #endif
  16. font.SetPointSize(fontSize);
  17. dc.SetFont(font);
  18. dc.SetTextForeground(wxColour(00, 20, 00));
  19. dc.DrawLabel(wxT( «http://wxwidgets.info» ),
  20. wxRect(0, 0, dc.GetSize().GetWidth(), dc.GetSize().GetHeight()),
  21. wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL);
  22. dc.SetFont(GetFont());
  23. for (size_t i = 0; i < m_Symbols.Count(); i++)
  24. <
  25. dc.SetTextForeground(m_Symbols[i].GetColour());
  26. dc.DrawText(wxString::Format(wxT( «%c» ), m_Symbols[i].GetSymbol()),
  27. m_Symbols[i].GetPosition());
  28. >
  29. >
  30. void MatrixCanvas::OnEraseBackground( wxEraseEvent& event )
  31. <
  32. >
  1. BEGIN_EVENT_TABLE( MatrixCanvas, wxWindow )
  2. .
  3. EVT_SIZE( MatrixCanvas::OnSize )
  4. END_EVENT_TABLE()
  5. .
  6. void MatrixCanvas::OnSize( wxSizeEvent& event )
  7. <
  8. InitMatrix();
  9. Refresh();
  10. >
  1. class MatrixCanvas: public wxWindow
  2. <
  3. .
  4. wxTimer * m_MovementTimer;
  5. >;
  6. MatrixCanvas::MatrixCanvas(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style)
  7. <
  8. Init();
  9. Create(parent, id, pos, size, style);
  10. >
  11. bool MatrixCanvas::Create(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style)
  12. <
  13. wxWindow::Create(parent, id, pos, size, style);
  14. CreateControls();
  15. return true ;
  16. >
  17. MatrixCanvas::
  1. void MatrixCanvas::OnMouse( wxMouseEvent& event )
  2. <
  3. if ( event .LeftDown() || event .MiddleDown() || event .RightDown())
  4. <
  5. if (!m_PreviewMode)
  6. <
  7. wxFrame * frame = wxDynamicCast(wxTheApp->GetTopWindow(), wxFrame);
  8. if (frame) frame->Close();
  9. >
  10. >
  11. >
  12. void MatrixCanvas::OnChar( wxKeyEvent& event )
  13. <
  14. if (!m_PreviewMode)
  15. <
  16. wxFrame * frame = wxDynamicCast(wxTheApp->GetTopWindow(), wxFrame);
  17. if (frame) frame->Close();
  18. >
  19. >
  1. void MatrixEffectMainFrame::CreateControls()
  2. <
  3. MatrixEffectMainFrame* itemFrame1 = this ;
  4. wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL);
  5. itemFrame1->SetSizer(itemBoxSizer2);
  6. m_Canvas = new MatrixCanvas( itemFrame1, ID_CANVAS, wxDefaultPosition, wxSize(100, 100), wxNO_BORDER );
  7. itemBoxSizer2->Add(m_Canvas, 1, wxGROW, 0);
  8. >

Вообще супер. На этом работу над графическим интерфейсом мы закончим.

Обработка параметров командной строки
  • “/s” или “/S” – непосредственно для запуска скринсейвера
  • “/c:” – для вызова окна настройки скринсейвера, где — численное представление дескриптора родительского окна.
    “/p:” – для запуска скринсейвера в режиме предварительного просмотра, где — численное представление дескриптора родительского окна.

Для обработки аргументов командной строки в wxWidgets существует класс wxCmdLineParser . Его мы и будем использовать.

  1. bool wxMatrixEffectApp::OnInit()
  2. <
  3. #if defined(__WXMSW__) && !defined(__WXWINCE__)
  4. wxCmdLineParser parser(argc, argv);
  5. parser.AddSwitch(wxT( «S» ), wxEmptyString,
  6. wxEmptyString, wxCMD_LINE_PARAM_OPTIONAL);
  7. parser.AddSwitch(wxT( «s» ), wxEmptyString,
  8. wxEmptyString, wxCMD_LINE_PARAM_OPTIONAL);
  9. parser.AddOption(wxT( «c» ), wxEmptyString,
  10. wxEmptyString, wxCMD_LINE_VAL_NUMBER, wxCMD_LINE_PARAM_OPTIONAL);
  11. parser.AddOption(wxT( «p» ), wxEmptyString,
  12. wxEmptyString, wxCMD_LINE_VAL_NUMBER, wxCMD_LINE_PARAM_OPTIONAL);
  13. if (parser.Parse( false ) == 0)
  14. <
  15. long parentHWND(0);
  16. if (parser.Found(wxT( «S» )) || parser.Found(wxT( «s» )))
  17. <
  18. MatrixEffectMainFrame* mainWindow =
  19. new MatrixEffectMainFrame( NULL );
  20. mainWindow->ShowFullScreen( true );
  21. return true ;
  22. >
  23. else if (parser.Found(wxT( «c» )))
  24. <
  25. wxMessageBox(
  26. _( «No settings for this screensaver. For more information visit wxwidgets.info» ));
  27. return false ;
  28. >
  29. else if (parser.Found(wxT( «p» ), &parentHWND))
  30. <
  31. wxWindow * parent = new wxWindow;
  32. parent->SetHWND((HWND)parentHWND);
  33. RECT r;
  34. GetWindowRect((HWND)parent->GetHWND(), &r);
  35. MatrixCanvas* mainWindow = new MatrixCanvas(
  36. parent, ID_MATRIXEFFECTMAINFRAME,
  37. wxPoint(0,0), wxSize(r.right-r.left, r.bottom-r.top),
  38. wxNO_BORDER);
  39. mainWindow->SetPreviewMode( true );
  40. SetTopWindow(mainWindow);
  41. mainWindow->Show( true );
  42. return true ;
  43. >
  44. >
  45. return false ;
  46. #else
  47. MatrixEffectMainFrame* mainWindow =
  48. new MatrixEffectMainFrame( NULL );
  49. SetTopWindow(mainWindow);
  50. #if defined(__WXWINCE__)
  51. mainWindow->Show( true );
  52. #else
  53. mainWindow->ShowFullScreen( true );
  54. #endif
  55. return true ;
  56. #endif
  57. >
  • Метод AddSwitch() указывает что командная строка может содержать аргумент вида /<argument> или —<argument> без дополнительных параметров.
  • Метод AddOption() указывает, что командная строка может содержать аргумент вида /<argument>=<value> или —= или /<argument>:<value>, т.е. параметр командной строки, содержащий значение (строковое, численное, дату).

Скринсейверы — как их установить или создать на своем компьютере

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

  • 1 1.Что такое скринсейверы?
  • 2 2. Загрузка и установка скринсейверов
  • 3 3. Как создать скринсейвер самому?

1.Что такое скринсейверы?

Скринсейверы , или как еще их называют — экранные заставки , всевозможные статичные, анимированные картинка или 3D картинки, которые появляются по прошествии определенного времени бездействия системы компьютера. Их количество — огромно! Выбор лишь за пользователями — наслаждаться ли природными ландшафтами, абстракциями 3D графики или геометрическими фигурами.

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

Наверняка в вашей операционной системе есть заготовленные стандартные скринсейверы (заставки). Например, для Windows7 их легко найти и установить, выбрав подходящую сделав следующий переход: Панель управления\Все элементы панели управления\Персонализация.

Внизу открывшегося экрана нужно найти соответствующую функцию и настроить нужную заставку: Но если вы захотите установить скринсейвер, отличный от имеющихся в запасе установленной ОС, то вам придется

а) найти и скачать подходящий в интернете (благо этого добра очень много);

б) создать его самостоятельно

2. Загрузка и установка скринсейверов

Чтобы найти и скачать понравившиеся вам заставки, достаточно в ПС системе ввести слово «скринсейвер» и пред вами откроется уйма сайтов, где можно найти всевозможные сайты, предлагающие свою продукцию, среди которой преимущественно бесплатная. К сожалению, среди очень привлекательных материалов, встречаются зараженные вирусами ( обязательно имейте лицензионный антивирус!). Я рекомендую вот этот сайт — проверено лично!

После загрузки и сохранения файла, в соответствующей и настроенной папке ( у меня это «Загрузки»), появятся примерно вот такие загрузочные файлы: Я выбрал два, установить их можно сколько угодно и менять на всякий подходящий случай. Запустите их и установите эти мини-программки. А теперь настройте заставку, выбрав подходящую:

Как видите, в настройках можно выставить интервал, просмотреть ее предварительно, если необходимо — начать экрана входа в систему. Но прежде чем установить нужную заставку, обязательно нажмите кнопку «Применить» (она должна стать активной, если установить галочку «начать экрана входа в систему».

3. Как создать скринсейвер самому?

Для этого вам понадобится специальная программа , например ФотоШОУ :

Где ее скачать бесплатно, я пока не знаю. Найду подходящий и проверенный сайт — обязательно оставлю ссылку в этом сообщении. Платных вариантов — очень много. Для тех, кто найдет этот бесплатный вариант или для тех, кто уже имеет программ ФотоШОУ, ниже небольшой обучающий ролик о том, как с ее помощью создавать собственные скринсейверы:

Если кто-то из читателей знает иные способы создания экранных заставок и с помощью других (может быть бесплатных) программ, прошу поделиться опытом.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *