Простой ScreenSaver на C#
// Очистить область рисования заливкой цветом фона
graph.FillRectangle(bg, 0, 0, this.Width, this.Height);
// случайным образом выбираем координаты центров кругов и рисуем их
for (int i = 0; i < 15; i++)
{
x = rnd.Next(this.Width);
y = rnd.Next(this.Height);
DrawCircle(x, y);
}
}
private void CloseWindowMouseMove(MouseEventArgs e)
{
// Если не предварительный просмотр заставки
if (!IsPreviewMode)
{
// смотрим, было ли установлено оригинальное местоположение
if (OriginalLocation.X == int.MaxValue &
OriginalLocation.Y == int.MaxValue)
{
OriginalLocation = e.Location;
}
// смотрим, переместился ли указатель мыши более чем на 20 пикселей
if (Math.Abs(e.X — OriginalLocation.X) > 20 |
Math.Abs(e.Y — OriginalLocation.Y) > 20)
{
Application.Exit();
}
}
}
private void frmMain_MouseMove(object sender, MouseEventArgs e)
{
this.CloseWindowMouseMove(e);
}
private void pbLogo_MouseMove(object sender, MouseEventArgs e)
{
this.CloseWindowMouseMove(e);
}
private void frmMain_Click(object sender, EventArgs e)
{
if (!IsPreviewMode)
{
Application.Exit();
}
}
private void pbLogo_Click(object sender, EventArgs e)
{
if (!IsPreviewMode)
{
Application.Exit();
}
}
private void frmMain_KeyDown(object sender, KeyEventArgs e)
{
if (!IsPreviewMode)
{
Application.Exit();
}
}
}
}
Файл FormConfigure.cs.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace SampleScreenSaver { public partial class FormConfigure : Form { public FormConfigure() { InitializeComponent(); } private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { lnkAuthor.LinkVisited = true; System.Diagnostics.Process.Start("https://sitkodenis.ru"); } } }
Сразу размещаю исходный код полного проекта SampleScreenSaver.
Последним этапом останется выполнить вашу программу и перейти в директорию с проектом, затем в папку obj, а потом в Debug. Внутри каталога Debug найти EXE-файл и переименовать его расширение в SCR (в моем случае это файл с именем SampleScreenSaver.exe).
Вот такой получился небольшой пример по созданию скринсейвера на языке программирования C#. Конечно же, я предполагаю, что многие вещи можно было бы сделать более элегантно, но не судите строго, т.к. в этом вопросе я не являюсь экспертом. В то же время постарался изложить материал так, чтобы было понятно многим.
Спасибо за внимание и до новых встреч.