CAD-страница НП | Статьи | Download | English

Прозрачная заставка в форме немодального диалога (на C#)

В книге "AutoCAD: разработка приложений, настройка и адаптация" был приведен пример приложения, написанного на C++ с применением технологии .NET. При запуске этого приложения на экране появлялась прозрачная заставка, которая исчезала или через пять секунд, или после щелчка мышью в зоне окна.

Приведем пример аналогичного приложения, тоже с применением технологии .NET, но написанного на языке на C#, с добавлением постепенного изменения прозрачности окна (вплоть до полного исечновения). Вот текст основного файла Wform16.cs:

// Н.Н.Полещук, 2010.
// Wform.cs
//
// http://poleshchuk.spb.ru/cad/2010/TrSplashCs.htm
//
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.ComponentModel;
using System.Windows.Forms;

namespace Book16cs
{

public class Wform16 : System.Windows.Forms.Form
{
private System.ComponentModel.IContainer components;

public Wform16()
{
InitializeComponent();
}

protected override void Dispose(bool disposing)
{
if (disposing)
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose(disposing);
}

private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(Wform16));

// Параметры диалогового окна
this.Size = new System.Drawing.Size(370, 300);
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.BackColor = System.Drawing.Color.Aquamarine;
this.Opacity = 1.0;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;

// Шрифт
System.Drawing.FontFamily Ff = new FontFamily("Arial");
System.Drawing.Font Font = new System.Drawing.Font(Ff, 36, FontStyle.Bold);

// Надпись в центре окна
System.Windows.Forms.Label Txt1 = new Label();
Txt1.Text = "Book16cs";
Txt1.Location = new Point(60, 110);
Txt1.AutoSize = true;
Txt1.ForeColor = Color.Black;
Txt1.Font = Font;
this.Controls.Add(Txt1);

// Добавление обработчика события Click для формы
this.Click += new System.EventHandler(this.Wform16_OnClick);

// Создание таймера
System.Windows.Forms.Timer tm = new System.Windows.Forms.Timer();
tm.Interval = 100; // интервал между сигналами = 0.1 сек.
tm.Tick += new System.EventHandler(this.Wform16_OnTimerTick);
tm.Enabled = true; //или tm.Start();

}

void Wform16_OnClick(object sender, System.EventArgs e)
{
// по щелчку закрыть окно
this.Close();
}

// Реакция на сигналы таймера
void Wform16_OnTimerTick(object sender, System.EventArgs ea)
{
System.Windows.Forms.Timer t1 = (System.Windows.Forms.Timer)sender;
// Изменение прозрачности окна через 0.1 сек.
this.Opacity -= 0.02;
// Остановка таймера по растворении окна (Opacity = 0)
if (this.Opacity <= 0.0)
{
t1.Stop();
// закрыть окно
this.Close();
}
}
}
}

Схема реализации выбрана такой же, как и в упомянутом выше приложении на языке C++. Небольшое отличие связано с несколько иным использованием таймера и влиянием на прозрачность окна, с тем чтобы окно увеличивало прозрачность и постепенно слилось бы с фоном.
Для создания эффекта непрерывности происходящих событий интервал между сигналами таймера выбран равным 100 (это соответствует 0.1 секунды). Начальное значение параметра Opacity выбрано равным 1.0 (полная непрозрачность окна). С каждым сигналом таймера из свойства Opacity вычитается 0.02. Нетрудно подсчитать, что через 50 сигналов таймера Opacity станет равным 0 и окно полностью исчезнет (растворится). Таким образом, время жизни окна-заставки равняется 5 секундам, если, конечно, пользователь раньше не щелкнет левой кнопкой мыши в зоне окна (но не на тексте).

Приложение работает в среде AutoCAD 2006-2010. Для запуска следует использовать команду BOOK16CS.

О написании приложений на C# и VB.NET см. главу 7 книги "AutoCAD: разработка приложений, настройка и адаптация". Эффект со сменой прозрачности можно было реализовать и в примере на C++ (предоставим это читателю).

Скачать файлы проекта с исходными текстами приложения для Visual Studio 2008 можно из раздела Download.


CAD-страница НП | Статьи | Download | English